1. 联合文件系统

2. Docker镜像加载原理
3. 为什么Docker镜像要采用这种分层结构呢?
4. 重点理解
Docker镜像层都是只读的,容器层是可写的。当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫做“镜像层”。
5. commit命令
docker commit命令可以提交容器副本使之成为一个新的镜像。
docker commit -m="提交的描述信息" -a="作者" 容器id 要创建的目标镜像名:[标签名]
6. 本地镜像发布到阿里云流程

# 登录docker login --username=xxy**** registry.cn-shenzhen.aliyuncs.com# 从registry中拉取镜像docker pull registry.cn-shenzhen.aliyuncs.com/myrepo/myubuntu:[镜像版本号]# 将镜像推送到registrydocker login --username=xxy**** registry.cn-shenzhen.aliyuncs.comdocker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/myrepo/myubuntu:[镜像版本号]docker push registry.cn-shenzhen.aliyuncs.com/myrepo/myubuntu:[镜像版本号]
7. docker私有库Docker Registry
# 拉取镜像docker pull registry# 运行私有库registry,相当于本地有个私有Docker hubdocker run -d -p 5000:5000 -v /zzyyuse/myregistry/:/temp/registry --privileged=true rgistry# 默认情况,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便宿主机联调# curl命令查看仓库有什么东西curl -XGET http://192.168.111.162:5000/v2/_catalog# 修改镜像为符合私服规范的tagdocker tag 镜像:Tag Host:Port/Repository:Tag# 修改docker配置文件,取消docker不允许http推送的配置,然后重启docker使之生效vim /etc/docker/daemon.json{"insecure-registries": ["192.168.111.162:5000"]}systemctl restart dockersystemctl status docker# 重启docker registrydocker run -d -p 5000:5000 -v /zzyyuse/myregistry/:/temp/registry --privileged=true rgistry# 推送到镜像私服仓库docker push 192.168.111.167:5000/zzyyubuntu:1.2# 使用curl验证一下仓库中有什么# 使用docker pull拉取镜像
8. 容器数据卷



# 如何运行一个带有容器卷存储功能的容器实例docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名

# 查看容器卷是否挂载成功,在出来的结果的Mounts下docker inspect 容器id
# 容器卷ro和rw读写规则,默认不写就是rwdocker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:rw 镜像名# 限制容器内只读docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
# 容器2继承容器1的卷规则docker run -it --privileged=true --volumes-from 父类 --name=u2 ubuntudocker run -it --privileged=true --volumes-from u1 --name=u2 ubuntu

