我知道,我知道,我应该输入
docker run -it ubuntu bash
但事实仍然是,一个容器已经被创建,它就在那里,它被停止了。它一旦启动就会停止,因此无法附加或执行它。
是不是真的没有办法改变它的状态以便bash启动呢?这对我来说似乎是一种表现。或许也有一些我没有得到的关于码头工人的奇妙可能性会让这样的事情变得复杂的事情?我怀疑。
为什么会这样?
答案 0 :(得分:0)
请记住两件事:
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
另外,你提到:
但事实仍然是,已经创建了一个容器,它已存在,并且已停止。它一旦启动就会停止,因此无法附加或执行它。
容器可以更好地被视为流程,这就是为什么你应该将它们视为短暂的东西。如果run
容器配置错误(在启动后立即退出),请将其删除并启动一个新的,这次使用正确的参数。
答案 1 :(得分:0)
当你像ubuntu一样运行图像时,你必须给它一个命令或进程来保持它的启动。在我的情况下,当我使用ubuntu图像进行测试时(主要是),我写了docker run --name myubuntu -d ubuntu:16.04 sleep 3000
您可以验证它是否以docker ps
运行。
在此之后,您可以使用docker exec -it myubuntu /bin/bash