Знаю, знаю, надо было набрать
docker run -it ubuntu bash
Но факт остается фактом: контейнер создан, он есть и остановлен. Он останавливается, как только запускается, поэтому нет возможности прикрепить или выполнить его.
Неужели нет абсолютно никакого способа изменить его состояние, чтобы вместо этого запускался bash? Мне это кажется своего рода остановкой на пути к успеху. Или, может быть, есть что-то, чего я не понял в чудесных возможностях докера, которые могли бы усложнить такую задачу? Сомневаюсь.
Почему так?


Имейте в виду две вещи:
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.