【发布时间】:2020-10-04 17:34:05
【问题描述】:
我是 Docker 新手,正在尝试使用 101-tutorial docker image(https://github.com/dockersamples/101-tutorial) 了解 Docker
在本课中,他们试图解释当 2 个容器实例从同一个镜像运行时,第一个容器创建的数据默认在第二个容器中不可用(除非我们使用容器卷和挂载,等)。
第 1 点和第 2 点表明 ubuntu 容器正在运行,并且有一个名为 data.txt 的文件。
据我了解,docker -it 用于访问 docker 容器内的终端。 https://docs.docker.com/engine/reference/run/
但我不明白第三点中使用的命令。为什么docker run -it ubuntu ls / 命令在 Ubuntu 映像上运行,而不是在使用 Container ID 的容器上运行?该命令是否仅用于显示图像内的内容,而不是使用 ls / 显示 docker 容器内的内容?
我预计第 3 点应该创建另一个容器实例,然后运行 ls /,但按照 docker ps,我看到我的机器中只有一个 ubuntu 容器运行。
【问题讨论】:
-
IIUC,它确实启动了一个容器并在其中运行
ls,但该容器立即再次关闭。 -
因此使用命令中传递的镜像名称创建了一个 docker 容器,并在该容器上运行
ls /,然后立即关闭该 docker 容器? -
尝试
docker ps -a列出所有容器。现在你只得到“正在运行”的。 @daniu 是正确的,因为只要 PID=1 的进程正在运行,容器就会启动并运行。ls运行然后退出,这使容器进入“退出”状态。更多信息:stackoverflow.com/questions/32427684/… -
@tgogos:谢谢。很清楚
-
另外,
docker run命令总是关于 ImageID 而不是 containerID,这意味着它总是会启动一个新容器。 stackoverflow.com/a/46138763/6700081