目录
docker镜像原理
1、操作系统组成部分:
进程调度子系统
进程通信子系统
内存管理子系统
设备管理子系统
文件管理子系统
网络通信子系统
作业控制子系统
2、Linux文件管理系统:
Linux文件系统由bootfs和rootfs两部分组成
bootfs: 包含bootloader (引导加载程序)和kernel (内核)
rootfs: root文件系统,包含的就是典型Linux 系统中的/dev,/proc,/bin,/etc等标准目录和文件
不同的linux发行版,bootfs基本一样,而rootfs不同,如ubuntu、centos等
3、原理:
- Docker镜像是由特殊的文件系统叠加而成
- 最底端是bootfs,并使用宿主机的bootfs
- 第二层是root文件系统rootfs,称为base image
- 然后再往上可以叠加其他的镜像文件
- 统一文件系统(Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。
- 一个镜像可以放在另一个镜像的上面。位于下面的镜像称为父镜像,最底部的镜像成为基础镜像
- 写文件系统作为容器当从一个镜像启动容器时,Docker会在最顶层加载一个读写文件系统作为容器
-
镜像制作
1、容器转为镜像
转成镜像:docker commit 容器id 镜像名称:版本号(镜像文件时无法传输的)
转成压缩文件:docker save -o 压缩文件名称 镜像名称:版本号
压缩文件解压缩:docker load -i 压缩文件名称
注:上述方式进行镜像传输时,从挂载的数据卷内同步到镜像中的数据会丢失。
2、dockerfile概念
- Dockerfile是一个文本文件包含了一条条的指令
- 每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
- 对于开发人员——可以为开发团队提供一个完全一致的开发环境
- 对于测试人员——可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了
- 对于运维人员——在部署时,可以实现应用的无缝移植
3、关键字
实验案例
需求:
自定义centos7镜像:
1.默认登录路径为/usr
2.可以使用vim
实现方法:
1、定义父镜像: FROM centos:7
2、定义作者信息:MAINTAINER a
3、执行安装vim命令: RUN yuminstall-y vim
4、定义默认的工作目录:WORKDIR/usr
5、定义容器启动执行的命令: CMD/bin/bash
实操:
1、创建dockerfile文件
2、根据需求编写dockerfile文件
3、构造镜像文件