镜像
- docker镜像:是一个容器中运行程序的所有文件的捆绑快照。
- 镜像包含了创建容器所需的文件和镜像元数据。该元数据包含关于镜像之间的关联信息、命令历史、暴露的端口、卷的定义等。
- 镜像维护着父/子依赖关系。在这些依赖关系中,从父层构建形成新的一层。容器中的文件是镜像所创建容器的所有层合集。
- 镜像可以与任何其他镜像有依赖关系,包括不同的所有者提供的不同仓库的镜像。
- 容器中正在运行的程序对镜像分层一无所知,仿佛该操作不是在容器中或操作镜像上运行的。从容器的角度看,它具有由镜像所提供文件的独占副本。(这就是所谓Union文件系统。Union文件系统是创建有效文件系统隔离极为关键的一套工具)
- 公共层仅需安装一次。如果想安装任何数目的镜像,它们都依赖于公共层,即公共层以及它的所有父层,都只需被下载或安装一次
- 一个标签只能在一个仓库中被应用到单个镜像,但一个镜像可以有多个标签。
- 仓库名由该镜像所在的主机、拥有该镜像的用户账户和一个简短的名称组成。
- 运行docker images -a将显示,包括多个仓库的列表
- Linux内核提供了MNT系统命名空间。当Docker创建一个容器,这个新的容器会有自己的MNT命名空间,以及为镜像创建新的挂载点。最后,chroot通过容器上下文来构建镜像的根文件系统。这可以防止运行于容器内的任何程序与主机系统的其他部分有所关联。chroot和MNT命名空间是常见的容器技术。
镜像文件的导出及导入
- docker save命令把该镜像保存到文件,创建的是TAR归档文件。如果省略-o标志,生成的文件将被传输到终端。
docker save -o myfile.tar nginx:latest
- docker load命令,加载镜像。
docker load -i myfile.tar
从DockerFile安装镜像
- Dockerfile是Docker用来描述新镜像构建步骤的脚本。这个文件会和作者想要放入镜像的软件一起发布。
- docker build 命令的-t选项的值设置成要安装镜像的仓库。
docker build -t test_ch3/dockerfile:latest ch3_dockerfile