我是一个新的Docker,正在尝试使用101-tutorial docker image()来学习Docker。https:/github.comdockersamples101-tutorial)
在这节课中,他们试图解释当2个容器实例从同一个映像中运行时,那么第一个容器创建的数据在第二个容器中默认是不可用的(除非我们使用容器卷和挂载等)。
第1点和第2点显示,一个ubuntu容器正在运行,并且有一个名为data.txt的文件。
按照我的理解。docker -it
用于访问docker容器内的终端。https:/docs.docker.comenginereferencerun。
但我不明白第3点使用的命令。为什么是 docker run -it ubuntu ls /
命令在Ubuntu镜像上运行,而不是使用容器ID在容器上运行?该命令是否仅用于显示图像内的内容,而不是使用 "容器ID "来显示docker容器内的内容?ls /
?
我以为第3点应该创建另一个容器实例,然后运行 ls /
但据 docker ps
我看到我的机器里只有一个ubuntu容器在运行。
正如它说,在 文件的 docker run
:
Docker在隔离的容器中运行进程。容器是在主机上运行的进程。主机可以是本地的,也可以是远程的。当操作者执行docker run时,运行的容器进程是隔离的,它有自己的文件系统,自己的网络,有自己的隔离进程树,与主机分离。
进程结束后,容器会被关闭。
至于你的问题是 "指的是映像还是容器"--你给出映像作为参数来创建容器,然后在创建的容器中运行进程。
一个Docker容器的生命周期是。
imagename
-> 创建容器 x
来自形象 imagename
x
ls
-> 执行命令 ls
在 运转 容器 x
x
-> 停止容器(但仍可见于...)。docker container ls -a
)x
-> 重新启动容器 x
x
-> 停止容器 x
再次x
-> 删除容器 x
(现在还 ls -a
不会显示)Docker容器之间是完全隔离的。当你使用镜像创建容器时,会借助命名间隔和cgroups将系统中的一小部分资源隔离出来,然后将镜像中的文件复制到这个隔离环境的资源里面。
当你执行命令 docker run -it ubuntu ls /
它创建了一个新的容器,运行指定的命令。ls /
并给你一个交互式的tty到docker容器使用的 -i
和 -t
标志。
在运行这个过程并向你展示输出后,容器立即退出,因此在输出的 docker ps
. 为了检查所创建的容器,请运行 docker ps --all
命令。