个人网站模板 php,中国建设监理网站,西宁市城乡建设网站,Wordpress的高级版1 Docker镜像
假设Linux内核是第0层#xff0c;那么无论怎么运行Docker#xff0c;它都是运行于内核层之上的。这个Docker镜像#xff0c;是一个只读的镜像#xff0c;位于第1层#xff0c;它不能被修改或不能保存状态。
一个Docker镜像可以构建于另一个Docker镜像之上那么无论怎么运行Docker它都是运行于内核层之上的。这个Docker镜像是一个只读的镜像位于第1层它不能被修改或不能保存状态。
一个Docker镜像可以构建于另一个Docker镜像之上这种层叠关系可以是多层的。第1层的镜像层我们称之为基础镜像Base Image其他层的镜像除了最顶层我们称之为父层镜像Parent Image。这些镜像继承了他们的父层镜像的所有属性和设置并在Dockerfile中添加了自己的配置。
Docker镜像通过镜像ID进行识别。镜像ID是一个64字符的十六进制的字符串。但是当我们运行镜像时通常我们不会使用镜像ID来引用镜像而是使用镜像名来引用。要列出本地所有有效的镜像可以使用命令
# docker images
镜像可以发布为不同的版本这种机制称之为标签Tag。 如上图所示neo4j镜像有两个版本lastest版本和2.1.5版本。
可以使用pull命令加上指定的标签
# docker pull ubuntu:14.04
# docker pull ubuntu:12.04
2 Docker容器
Docker容器可以使用命令创建
# docker run imagename
它会在所有的镜像层之上增加一个可写层。这个可写层有运行在CPU上的进程而且有两个不同的状态运行态Running和退出态Exited。这就是Docker容器。当我们使用docker run启动容器Docker容器就进入运行态当我们停止Docker容器时它就进入退出态。
当我们有一个正在运行的Docker容器时从运行态到停止态我们对它所做的一切变更都会永久地写到容器的文件系统中。要切记对容器的变更是写入到容器的文件系统的而不是写入到Docker镜像中的。
我们可以用同一个镜像启动多个Docker容器这些容器启动后都是活动的彼此还是相互隔离的。我们对其中一个容器所做的变更只会局限于那个容器本身。
如果对容器的底层镜像进行修改那么当前正在运行的容器是不受影响的不会发生自动更新现象。
如果想更新容器到其镜像的新版本那么必须当心确保我们是以正确的方式构建了数据结构否则我们可能会导致损失容器中所有数据的后果。
64字符的十六进制的字符串来定义容器ID它是容器的唯一标识符。容器之间的交互是依靠容器ID识别的由于容器ID的字符太长我们通常只需键入容器ID的前4个字符即可。当然我们还可以使用容器名但显然用4字符的容器ID更为简便。