• 基础理解

    联合文件系统UnionFS:一种分层、轻量级并且高性能的文件系统。支持对文件系统的修改作为一次提交来一层层的叠加。

    Dokcer镜像就是由一层一层的文件系统组成的。

    image-20230224163455650

    按我的理解:Linux下bootfs是一致的,这个可以共用,rootfs有差别,但是它非常的小。docker使用系统自带的bootfs然后自身自带的rootfs。

    重点理解

    Docker镜像分为镜像层和容器层,镜像层是只读的,而容器层可读写。容器层之下是镜像层。如何改动操作都发生在容器层。

    1

  • 镜像制作

    docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的文件名:[标签名]

    image-20230224170528188

  • 推送镜像

    • 推送到阿里云

      $ docker login --username=deve*****@xxcheng.cn registry.cn-hangzhou.aliyuncs.com
      $ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/xxcheng/my_ubuntu:[镜像版本号]
      $ docker push registry.cn-hangzhou.aliyuncs.com/xxcheng/my_ubuntu:[镜像版本号]

      image-20230224173422390

    • 阿里云拉取到本地

      $ docker pull registry.cn-hangzhou.aliyuncs.com/xxcheng/my_ubuntu:[镜像版本号]

      image-20230224173700742

    • 搭建本地私服

      • 拉取registry docker pull registry

      • 运行私有库 docker run -d -p 5000:5000 registry

      • 修改配置文件,使支持http方式

        vim /etc/docker/daemon.json

        新增"insecure-registries": ["192.168.111.162:5000"]

        image-20230224181119265

        如果配置不生效,使用systemctl restart docker尝试重启是否生效,生产环境禁用

        重启完之后,还要记得启动registry

      • 开始推送,与阿里云操作类似

        [root@localhost ~]# docker tag 58883a153aaa 192.168.12.7:5000/my_ubuntu:1.0.1
        [root@localhost ~]# docker push 192.168.12.7:5000/my_ubuntu:1.0.1
        The push refers to repository [192.168.12.7:5000/my_ubuntu]
        479e3b95f1ce: Pushed 
        e80a1cec5b45: Pushed 
        9f54eef41275: Pushed 
        1.0.1: digest: sha256:c1aa12a05db05e0db03575b25d1f875b1f26736813639e9e6cd1143e21508335 size: 948

        image-20230224194641228

        image-20230224194911693