加入收藏 | 设为首页 | 会员中心 | 我要投稿 广州站长网 (https://www.020zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 移动互联 > 评测 > 正文

10张图带你深入理解Docker容器和镜像

发布时间:2019-07-24 23:09:13 所属栏目:评测 来源:佚名
导读:副标题#e# 这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(container)和镜像(image)之间的区别,并深入探讨容器和运行中的容器之间的区别。 当我对Docker技术还是一知半解的时候,我发现理解Docker的命令非常困难。于是,我花了几周的时间来学习D

现在,让我们结合上面提到的实现细节来理解Docker的命令。

  1. docker create <image-id> 

10张图带你深入理解Docker容器和镜像

docker create 命令为指定的镜像(image)添加了一个可读写层,构成了一个新的容器。注意,这个容器并没有运行。

10张图带你深入理解Docker容器和镜像

docker start <container-id>

10张图带你深入理解Docker容器和镜像

Docker start命令为容器文件系统创建了一个进程隔离空间。注意,每一个容器只能够有一个进程隔离空间。

docker run <image-id>

10张图带你深入理解Docker容器和镜像

看到这个命令,读者通常会有一个疑问:docker start 和 docker run命令有什么区别。

10张图带你深入理解Docker容器和镜像

从图片可以看出,docker run 命令先是利用镜像创建了一个容器,然后运行这个容器。这个命令非常的方便,并且隐藏了两个命令的细节,但从另一方面来看,这容易让用户产生误解。

题外话:继续我们之前有关于Git的话题,我认为docker run命令类似于git pull命令。git pull命令就是git fetch 和 git merge两个命令的组合,同样的,docker run就是docker create和docker start两个命令的组合。

docker ps

10张图带你深入理解Docker容器和镜像

docker ps 命令会列出所有运行中的容器。这隐藏了非运行态容器的存在,如果想要找出这些容器,我们需要使用下面这个命令。

docker ps –a

10张图带你深入理解Docker容器和镜像

docker ps –a命令会列出所有的容器,不管是运行的,还是停止的。

docker images

10张图带你深入理解Docker容器和镜像

docker images命令会列出了所有顶层(top-level)镜像。实际上,在这里我们没有办法区分一个镜像和一个只读层,所以我们提出了top-level镜像。只有创建容器时使用的镜像或者是直接pull下来的镜像能被称为顶层(top-level)镜像,并且每一个顶层镜像下面都隐藏了多个镜像层。

docker images –a

10张图带你深入理解Docker容器和镜像

docker images –a命令列出了所有的镜像,也可以说是列出了所有的可读层。如果你想要查看某一个image-id下的所有层,可以使用docker history来查看。

docker stop <container-id>

10张图带你深入理解Docker容器和镜像

docker stop命令会向运行中的容器发送一个SIGTERM的信号,然后停止所有的进程。

docker kill <container-id>

10张图带你深入理解Docker容器和镜像

docker kill 命令向所有运行在容器中的进程发送了一个不友好的SIGKILL信号。

docker pause <container-id>

10张图带你深入理解Docker容器和镜像

docker stop和docker kill命令会发送UNIX的信号给运行中的进程,docker pause命令则不一样,它利用了cgroups的特性将运行中的进程空间暂停。具体的内部原理你可以在这里找到:https://www.kernel.org/doc/Doc ... m.txt,但是这种方式的不足之处在于发送一个SIGTSTP信号对于进程来说不够简单易懂,以至于不能够让所有进程暂停。

(编辑:广州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读