Не удается запустить изображение в Docker

#docker

#docker

Вопрос:

Я создал изображение под названием «helloworld» на основе какого-то проекта, который у меня есть.

Если я запускаю :

изображения Docker

Я вижу его там в верхней части списка.

введите описание изображения здесь

Теперь, если я хочу его запустить, docker жалуется, что оно не существует.

Запуск этого :

 docker run -p 8080:8080 helloworld
  

возвращает это :

docker: Ответ об ошибке от daemon: отказано в доступе к helloworld, репозиторий не существует или может потребовать «входа в систему docker»: отказано: запрошенный доступ к ресурсу отклонен. Смотрите ‘docker run —help’.

Почему docker жалуется, что мое изображение не существует?

Ответ №1:

Он жалуется, потому что это:

 docker run -p 8080:8080 helloworld
  

это сокращенная версия этого:

 docker run -p 8080:8080 docker.io/library/helloworld:latest
  

и, судя по скриншоту, ваше изображение вызывается

 docker.io/library/helloworld:1.0
  

таким образом, правильная команда (пропуская префикс по умолчанию) является:

 docker run -p 8080:8080 helloworld:1.0
  

Ответ №2:

Другие ответы правильные, но не объясняют четко, почему они правильные.

docker run Команда ожидает имя изображения и, необязательно, тег (т. Е. docker run IMAGE[:TAG] ). Если тег не указан, по умолчанию используется latest .

Запуск docker run helloworld эквивалентен docker run helloworld:latest , но этот образ не существует в операционной системе в соответствии с docker images .

Решение состоит в том, чтобы указать тег изображения: helloworld:1.0 .

Ответ №3:

Ваша команда сборки изображения:

 docker build --rm -f "Dockerfile" -t helloworld:1.0 "."
  

Это означает, что ваше имя изображения helloworld:1.0

Если бы вы запустили docker build --rm -f "Dockerfile" -t helloworld "."

Тогда ваше имя изображения — helloworld или helloworld:latest , и ваша первая попытка сработала бы.

Чтобы решить вашу проблему, запустите это вместо:

 docker run -p 8080:8080 helloworld:1.0