Docker技术简介

Docker镜像

Docker镜像含有Docker容器运行所需的文件系统结构及其内容,因此是启动一个Docker容器的基础。如果将 Docker容器看作一套程序的运行环境,那么Docker镜像就是构造这个运行环境的模板。基于同一个Docker镜像,用户可以在短时间内迅速构造大量运行环境一致但各自独立的Docker容器。

Docker镜像采用分层结构,它的底层称为启动文件系统(bootfs)层,这一层对用户来说是透明的。bootfs 的上层为根镜像(rootfs)层,rootfs层通常是精简后的操作系统文件,如 CentOS、Debian和 Ubuntu等。当需要修改镜像内的某个文件时,只对处于最上方的读写层进行修改,而不覆写下层已有文件系统的内容,已有文件在只读层中的原始版本仍然存在,但是会被读写层中的新版文件所隐藏。当将这个修改过的容器文件系统保存为一个新的镜像时,保存的内容仅为最上层的读写层中更新过的文件,这也是Docker 如此轻巧的重要原因之一。这种增量式的修改使Docker镜像易于存储和传输,当用户向Docker Registry推送或者从 Docker Registry拉取一份新的镜像时,不需要下载或推送镜像中所有的文件层,而只需要下载或者推送有变化的文件层即可。

Docker镜像通过联合挂载技术将各层文件系统叠加在一起,最终形成包含所有底层文件与目录的文件系统,镜像按照一定的层次结构叠加而成,一个新的镜像可以基于另一个镜像构建。如无特别说明,下文中的镜像都指的是Docker镜像。

Docker容器

Docker容器是Docker镜像的一个运行实例,或者说是处于运行状态的镜像,不同之处是它在镜像的只读文件层之上覆盖了一个额外的可写文件层。Docker容器内所有的文件变化都不会影响其基础镜像,除非以此容器为基础生成一个新的镜像,此时容器相对于镜像有修改的部分将作为一个文件层固化在新的镜像中。

Docker将标准集装箱的概念运用到了自身的设计哲学中,就像货轮只需要运输集装箱而无需关心箱内的货物一样。容器可以用来“运输”一个或一组应用,它里面封装了应用所需要的全部运行环境。基于这个特性,Docker容器可以非常方便地分发复用,拥有强大的可移植性。如无特别说明,下文中的容器都指的是Docker容器。

Docker Registry

Docker Registry是一个集中化存储、管理和分发Docker镜像的仓库,其中还包括镜像层次结构和关于镜像的元数据,因此可以将Docker Registry简单看作类似于Git仓库之类的实体。当使用docker run命令启动一个容器时,若镜像没有存储在本地,Docker将从 Docker Registry中下载该镜像并保存到本地。

用户可以在自己的数据中心中搭建registry,同时也可以使用Docker公司维护的公共镜像仓库,即Docker Hub,其中包含了4万多个公共镜像可供用户下载。理论上Docker Hub中的镜像经过官方验证,通常认为是架构良好且安全的,用户在Docker Hub官方网站使用电子邮箱注册账户即可免费使用其服务。用户首次向Docker Hub推送镜像时,须在命令行客户端登录账号,用户密码经哈希变换后保存在~/.docker/config.json文件的auth字段中。

用户通过docker push命令将镜像推送到Docker Hub后,可以在网站页面中对自己的镜像进行添加描述信息等管理操作,若某一镜像被设定为“公开”状态,则其他用户可以使用docker search和docker pull命令搜索并拉取该镜像。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

站长QQ/VX:82794

在线咨询: QQ交谈

邮箱: 82794@qq.com

任何技术问题请联系QQ,非特殊行业请勿加微信!龙信小伙伴请联系微信群找我。
关注微信
非商务合作请勿添加

非商务合作请勿添加微信

返回顶部