4.Docker本地镜像发布至阿里云仓库、私有仓库、DockerHub

文章目录

Docker仓库是集中存放镜像的地方,分为公共仓库和私有仓库。

注册服务器是存放仓库的具体服务器,一个注册服务器上可以有多个仓库,而每个仓库下面可以有多个镜像。例如对于仓库地址private-docker.com/ubuntu来说,private-docker.com是注册服务器地址,ubuntu是仓库名。

0、镜像的生成方法

镜像的生成方法共三种,详情见3.Docker常用镜像命令和容器命令详解中创建镜像小结。

  1. 基于已有容器创建
  2. 基于本地魔板导入
  3. 基于Dockerfile创建

本地镜像发布流程:

1、本地镜像发布到阿里云仓库

  1. 在阿里云开发者平台创建镜像仓库

  2. 在阿里云开发者平台选择容器镜像服务

  3. 创建个人实例、创建命名空间、创建镜像仓库

  4. 进入管理界面获得脚本

  5. 按照脚本进行登录、添加tag、推送镜像到阿里云

    bash 复制代码
     #登录
     docker login --username=命名空间 registry.cn-hangzhou.aliyuncs.com
     #将需要推送的镜像增加对应的标签tag
     docker tag cea1bb40441c registry.cn-hangzhou.aliyuncs.com/命名空间/myubuntu:1.0
     #推送镜像
     docker push registry.cn-hangzhou.aliyuncs.com/命名空间/myubuntu:1.0
  6. 查看阿里云镜像层,推送成功

  7. 将阿里云镜像拉取到本地

    bash 复制代码
    docker pull registry.cn-hangzhou.aliyuncs.com/命名空间/myubuntu:1.0

2、本地镜像发布到私有仓库

本地仓库通过拉取registry镜像并运行容器,通过docker服务提供私有仓库。

  1. 下载镜像Docker Registry

    bash 复制代码
    [root@localhost .docker]# docker pull registry 
    [root@localhost .docker]# docker images
    REPOSITORY                                            TAG       IMAGE ID       CREATED       SIZE
    registry                                              2         b8604a3fe854   2 years ago   26.2MB
    192.168.10.101:5000/ubuntu                            0.1       ba6acccedd29   2 years ago   72.8MB
    ubuntu                                                latest    ba6acccedd29   2 years ago   72.8MB
    registry.cn-hangzhou.aliyuncs.com/***/myubuntu   1.0       ba6acccedd29   2 years ago   72.8MB
  2. 运行私有库Registry,相当于本地有个私有的DockerHub

    bash 复制代码
    [root@localhost .docker]# docker run -d -p 5000:5000  -v /opt/data/registry/:/tmp/registry --privileged=true registry
    
    [root@localhost .docker]# docker ps
    CONTAINER ID   IMAGE        COMMAND                   CREATED      STATUS          PORTS                                       NAMES
    576c26ba353b   registry:2   "/entrypoint.sh /etc..."   2 days ago   Up 45 minutes   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   registry

    在本地启动一个私有仓库服务,监听端口为5000。

  3. 生成一个带ifconfig的ubuntu镜像

    bash 复制代码
    #进入ubuntu容器,docker容器内执行上述两条命令:
    apt-get update
    apt-get install net-tools
    #执行ifconfig命令成功
    #docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
    docker commit -m="ifconfig cmd add" -a="zyn" 容器ID 要创建的目标镜像名:[标签名]
    
    #将新镜像修改为符合私服规范的Tag
    docker tag  ubuntu:latest 192.168.10.101:5000/myubuntu:1.2
    
    [root@localhost .docker]# docker images
    REPOSITORY                                            TAG       IMAGE ID       CREATED       SIZE
    registry                                              2         b8604a3fe854   2 years ago   26.2MB
    192.168.10.101:5000/ubuntu                            0.1       ba6acccedd29   2 years ago   72.8MB
    ubuntu                                                latest    ba6acccedd29   2 years ago   72.8MB
    registry.cn-hangzhou.aliyuncs.com/***/myubuntu   1.0       ba6acccedd29   2 years ago   72.8MB
  4. 通过curl验证私服库上的镜像

    bash 复制代码
    [root@localhost .docker]# curl -XGET http://192.168.10.101:5000/v2/_catalog
  5. 修改配置文件使之支持http,docker默认不允许http方式推送镜像,通过配置选项来取消这个限制。

    bash 复制代码
    [root@localhost .docker]# cat /etc/docker/daemon.json 
    {
      "registry-mirrors": ["https://***.mirror.aliyuncs.com"],
      "insecure-registries": ["192.168.10.101:5000"]
    }
  6. 重启docker

    bash 复制代码
    systemctl restart docker
  7. push推送至私服仓库

    bash 复制代码
    docker push 192.168.10.101:5000/ubuntu:0.1
  8. curl验证,pull到本地并运行

    复制代码
    [root@localhost .docker]# curl -XGET http://192.168.10.101:5000/v2/_catalog
    {"repositories":["ubuntu"]}
    
    docker pull 192.168.10.101:5000/ubuntu:0.1
    docker run -it 镜像ID /bin/bash

3、本地镜像发布到Docker Hub仓库

DockerHub是Docker官方提供的公共镜像仓库,地址为https://hub.docker.com

  1. 登录

    bash 复制代码
    docker login

    输入用户名、密码完成登录。本地用户目录下自动创建.docker/config.json文件用于保存用户的认证信息。

  2. 使用docker [image] push命令上传镜像到仓库, 默认上传到Docker Hub 官方仓库(需要登录)。

相关推荐
❀͜͡傀儡师5 小时前
docker部署Rainbond 版本v6.5.0 UI 焕新升级,故障定位更精准
运维·docker·容器
T0uken6 小时前
Docker 在国内网络环境下的使用
网络·docker·容器
竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。7 小时前
Docker部署Fio磁盘读写测试
运维·docker·容器
工具罗某人11 小时前
CentOS7安装docker
docker·云原生·centos
小代码201612 小时前
loki 环境搭建
spring boot·docker·log4j·grafana
我爱学习好爱好爱13 小时前
Prometheus监控栈 监控docker和进程
docker·容器·prometheus
hhzz13 小时前
Docker 搭建 NextCloud + OnlyOffice 完整教程(Linux Centos7系统)
linux·docker·容器·onlyoffice·nextcloud
一条闲鱼_mytube14 小时前
CI/CD: TektonCI 深入浅出教程
容器·kubernetes·tekton
记得开心一点嘛14 小时前
k8s部署微服务项目
微服务·容器·kubernetes
勇气要爆发15 小时前
Docker:软件开发的“标准集装箱”
运维·docker·容器