Docker (3)

97 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第26天,点击查看活动详情

之前总结过几次 Docker 容器技术相关的内容,这次继续,主要涉及一下 Docker 中关于容器以及仓库的理解.....

容器

为了便于理解,大家可以把容器想象成虚拟机,每个虚拟机都有自己的文件系统,可以把上图整个一部分看成是文件系统,与虚拟机系统的区别是这里面的文件系统是一层一层的,并且最下面的 n 层都是只读的,只有上面一层是可写的。为什么要有可写的这层呢?大家的程序运行起来,势必会要写一些日志,写一些文件,或者对系统的某一些文件做一些修改,所以容器在最上面一层创建了可读可写的文件系统。

在程序的运行过程中,如果要写镜像文件时,因为镜像的每一层都是只读的,它会把文件的每一层拷到文件的最上层,然后再对它进行修改,修改之后,当我们的应用读一个文件时会从顶层进行查找,如果没有才会找下一层。

由于容器的最上一层是可以修改的,镜像是不能修改的,这样就能保证镜像可以生成多个容器独立运行,没有任何干扰。

仓库

我们的镜像是要在其它机器上运行,如何进行传输呢?

这就用到了 Docker 仓库,我们要先把我们的镜像传到 Docker 仓库中,再由目的地把 Docker 仓库拉过去,这就完成了这样的一次传输过程。

谁提供了这样的仓库呢?其实 Docker 自己就已经提供了:hub.docker.com,但是非常慢。为了解决这个问题,国内很多公司也在做自己的仓库。

上次提到过镜像,镜像就是之前最开始我关于 Docker 的文章中说的集装箱,仓库就是超级码头,容器就是我们运行程序的地方。Docker 运行程序的过程就是去仓库把镜像拉到本地,然后用一条命令把镜像运行起来变成容器。

build:构建,就是构建镜像。
ship:运输,运输镜像,从仓库和主机运输。
run:运行的镜像就是一个容器。
build,ship,run 和镜像,仓库,容器是一一对应的。

今天就接着简单介绍了一下 Docker 中的容器以及仓库,加上上次引入的镜像,Docker 中基本的三个概念算是引入成功了,剩下的之后再慢慢梳理......
希望本文能够帮到你,如有错误,望指正!
我向你敬礼啊,Salute!