Docker Images:
Docker 镜像里面还有启动容器所需要的文件系统机器内容,因此用于启动和创建容器。
- 采用分层构建机制,大体分为两部分:最底层为bootfs, 上面为rootfs:
- Bootfs: 用于系统引导的文件系统,包括bootloader和kernel,容器启动完成后,会卸载,节约内存空间;
- Rootfs: 位于bootfs之上,表现为容器的根文件系统;
- Docker image layer:
位于下层的镜像称为父镜像,最底层的称为基础镜像(base image);
注意只有最上层为“可读写层”,其他均为“只读层”。 - Docker registry
存放镜像的仓库,启动容器时,docker daemon会首先从本地获取相关镜像;本地镜像不存在时,会从docker registry中获取镜像,并拉取到本地,加以保存。 - 一个registry由两部分组成:repository和index:
具体的docker registry会在后面详细描述。
镜像的生成途径:
- Dockerfile: docker build 命令来生成一个镜像,后续会重点详细描述;
- 基于容器制作:在容器里面操作完之后,用docker commit命令制作镜像
- Docker Hub: 直接从docker pull 。
下面先重点详细介绍下基于容器制作镜像:
先启动并进入一个容器中(还是以busybox为例):
然后,在容器中进行一系列操作(下面为example):
然后,用docker commit生成镜像(注意,将容器先暂停):
最后,用这个新镜像验证是否有index.html文件:
镜像制作成功。
镜像导入和导出:
Docker save: 将本地下载好的镜像打包;
Docker load:将打包好的镜像文件,放在另外一台机器docker load 即可:
总结:
下图为总结出的镜像制作过程图: