Docker[note_06]使用dockerfile制作镜像
2020-03-21 本文已影响0人
墨流引
一、docker镜像原理
Linux文件系统由bootfs和rootfs两部分组成
- bootfs(boot file system):包含 boot loader(引导加载程序)和 kernel(内核)。用户不会修改这个文件系统。实际上,在启动(boot)过程完成后,整个内核都会被加载进内存,此时 bootfs 会被卸载掉从而释放出所占用的内存。同时也可以看出,对于同样内核版本的不同的 Linux 发行版的 bootfs 都是一致的。
- rootfs(root file system):包含典型的目录结构,包括 /dev, /proc, /bin, /etc, /lib, /usr, and /tmp 等再加上要运行用户应用所需要的所有配置文件,二进制文件和库文件。这个文件系统在不同的Linux 发行版中是不同的。而且用户可以对这个文件进行修改。
Docker镜像由特殊的文件系统叠加而成
- 最底层是bootfs,并且使用宿主机的bootfs
- 第二层是rootfs文件系统,又称基础镜像
- 然后再往上可以叠加其他的镜像文件
二、dockerfile
容器转镜像
- 容器转镜像
docker commit <容器ID> <新镜像名:版本号>
容器转成镜像后,通过数据卷,挂载的文件不会存在。
- 镜像转压缩文件
docker save -o <压缩文件名称> <镜像名称:版本号>
- 压缩文件还原镜像
docker load -i <压缩文件名称>
DockerFile
- docker是一个文本文件
- 包含了一条条指令
- 每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
# centos7 dockerfile
FROM scratch
ADD centos-7-docker.tar.xz /
LABEL org.label-schema.schema-version="1.0" \
org.label-schema.name="CentOS Base Image" \
org.label-schema.vendor="CentOS" \
org.label-schema.license="GPLv2" \
org.label-schema.build-date="20181205"
CMD ["/bin/bash"]