• docker-推送镜像到私服库


    docker-推送镜像到私服库


    1. 模拟案例

    【拉取一个ubuntu镜像】 ⇒ 【以ubuntu镜像创建容器,添加一个vim功能】  ⇒ 
    
    【将添加vim功能的容器打成一个新镜像】 ⇒ 【拉取registry镜像,搭建本地docker-hub仓库】 ⇒ 
    
    【将镜像推送到本地的docker-hub仓库】
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2. 案例实现

    • 2.1 拉取一个ubuntu镜像

      • 搜索镜像
        docker search ubuntu --limit 5  # 查询ubuntu相关镜像
        
        • 1
        结果:
        docker search ubuntu --limit 5

      • 拉取并查看ubuntu镜像
        docker pull ubuntu  # 拉取ubuntu镜像
        docker images [镜像名] # 查看拉取的镜像,不加镜像名查看所有安装的镜像
        
        • 1
        • 2
        查看镜像:
        docker images
    • 2.2 以ubuntu镜像创建容器,添加一个vim功能

      • 以交互模式在新终端运行ubuntu容器

        docker run -it --name my_ubuntu ubuntu /bin/bash
        
        • 1

        结果:
        docker run

      • 基础的ubuntu镜像只保留核心的功能,其他功能需要自己安装:
        在这里插入图片描述

      • 安装vim

        apt update  # 更新的软件列表
        apt search <keyword> # 查找软件包命令
        apt install vim # 安装vim
        
        • 1
        • 2
        • 3

        安装完成后就有vim功能了:再次执行 vim a.txt
        vim a.txt

    • 2.3 将添加vim功能的容器打成一个新镜像

      • ctry + p + q 不退出容器,回到主机

        docker ps  # 查看容器的状态
        
        • 1

        结果:
        docker ps

      • 以运行的容器创建一个新镜像 -m=“描述信息” -a=“作者” 容器id 镜像名:版本

        docker commit -m="ubuntu add vim" -a="yyy" 7cf6d79c2de8 yyy/my_ubuntu:1.0.1
        
        • 1

        结果:
        docker commit

    • 2.4 拉取registry镜像,搭建本地docker-hub仓库

      • 拉取并运行registry镜像

        docker pull registry # 拉取registry镜像
        docker run -d -p 5000:5000 -v /data/my_registry/:/tmp/registry --privileged=true registry 
        # -d 表示后台运行  -p 主机端口:docker端口(设置端口映射)
        # -v 主机目录:容器目录(volume 容器卷,作用是主机与容器指定位置实时同步备份)
        # --privileged=true 权限提升
        
        • 1
        • 2
        • 3
        • 4
        • 5

        结果:
        registry

      • get请求查看仓库的镜像 http://主机ip地址:主机端口/v2/_catalog

        curl --get http://192.168.71:5000/v2/_catalog 
        
        • 1

        查看本地仓库镜像(repositories数组内就表示存放的镜像,当前没有镜像):
        在这里插入图片描述

    • 2.5 将镜像推送到本地的docker-hub仓库

      • 当前创建的镜像命名并不符合要上传仓库的命名规范,要先进行修改:

        在这里插入图片描述

        docker tag yyy/my_ubuntu:1.0.1 192.168.71.129:5000/yyy/my_ubuntu:1.0.1
        # 打tag,相当于将镜像复制一份出来对名字和版本进行修改
        # 命名规范是 主机ip地址:端口/命名空间(有无都行)/镜像名:版本
        
        • 1
        • 2
        • 3

        结果:
        在这里插入图片描述


      • 尝试推送镜像到本地仓库:docker push 192.168.71.129:5000/yyy/my_ubuntu:1.0.1

        尝试推送镜像到本地仓库
        docker 默认不允许使用 http 的方式去推送镜像


      • 如果我们要使用http去推送的话,就需要配置(/etc/docker/daemon.json):

        /etc/docker/daemon.json
        查看发现只有配置了阿里云镜像加速的属性

        我们需要加一个 insecure-registries 属性,并将允许访问的 http 协议

        vim /etc/docker/daemon.json

        vim /etc/docker/daemon.json
        在 insecure-registries 属性值的数组中添加自己的 主机ip和端口,保存退出,重启docker,再进行推送:

        systemctl restart docker  # 重启docker
        # 创建 registry 容器,启用本地仓库服务ls
        docker run -d -p 5000:5000 -v /data/my_registry/:/tmp/registry --privileged=true registry
        docker push 本地镜像  # 推送镜像
        
        • 1
        • 2
        • 3
        • 4

        推送:
        推送镜像
        查看本地仓库镜像:
        查看本地仓库镜像

        done!!!

  • 相关阅读:
    Edexcel A-Level化学真题讲解(1)
    Android 12.0 默认授予应用权限
    JS逆向中异步栈跟踪
    场景应用:用Java写三个线程轮流打印1-100的程序
    (min,max)=>Math.floor(Math.random()*(max-min+1)+min
    基于web、dns、nfs的综合实验
    codeforces刷题二
    Google Earth Engine ——Landsat 5 和Landsat1-4影像集合
    K8S安全学习
    Autosar诊断实战系列16-UDS19 06扩展数据配置及工程问题讨论
  • 原文地址:https://blog.csdn.net/ywl_156/article/details/126264943