Я набрал docker run ubuntu, что теперь?

Знаю, знаю, надо было набрать

docker run -it ubuntu bash

Но факт остается фактом: контейнер создан, он есть и остановлен. Он останавливается, как только запускается, поэтому нет возможности прикрепить или выполнить его.

Неужели нет абсолютно никакого способа изменить его состояние, чтобы вместо этого запускался bash? Мне это кажется своего рода остановкой на пути к успеху. Или, может быть, есть что-то, чего я не понял в чудесных возможностях докера, которые могли бы усложнить такую ​​задачу? Сомневаюсь.

Почему так?

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
1
0
156
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Имейте в виду две вещи:

  • 1-й: контейнер запущен и работает, пока работает его основной процесс.
  • 2-й: ubuntu имеет команду по умолчанию: CMD ["/bin/bash"]. Когда вы используете docker run ubuntu bash, вы перезаписываете его на CMD ["bash"]. Нет большой разницы.

Почему docker run ubuntu не работает:

Потому что bash просто выходит. Помните, что bash - это команда по умолчанию.

Почему docker run -it ubuntu успешен:

Потому что -t заставляет bash продолжать работать. Из docker run --help:

-t, --tty                            Allocate a pseudo-TTY

Также вы упоминаете:

But the fact remains, a container has been created, it is there, and it is stopped. It stops as soon as it is started, so there's no way to attach or exec in it.

Контейнеры лучше рассматривать как процессы, и поэтому вы должны рассматривать их как нечто эфемерное. Если это произойдет с run контейнером с неправильной конфигурацией (выход сразу после запуска), удалите его и создайте новый, на этот раз с правильными параметрами.

когда вы запускаете образ, такой как ubuntu, вы должны дать ему команду или процесс, чтобы он продолжал работать. В моем случае, когда я использую образ ubuntu для тестов (в основном), я пишу docker run --name myubuntu -d ubuntu:16.04 sleep 3000

вы можете проверить, работает ли он с docker ps.

После этого вы можете зайти внутрь с docker exec -it myubuntu /bin/bash.

Другие вопросы по теме