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 官方仓库(需要登录)。

相关推荐
虎头金猫1 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS1 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
玉&心1 天前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing1 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
赵文宇(温玉)1 天前
CoreDNS的hosts插件的缺行配置导致k8s集群异常
容器·kubernetes·rancher
guo_wen_qiang1 天前
上传本地镜像到harbor中
docker·容器·持续部署
羑悻的小杀马特1 天前
Dockerfile 全景指南:从入门编写dockerfile到生产环境镜像优化实战,一步步带你从啃透制作指令到镜像制作落地!
docker·dockerfile·镜像制作
BianHuanShiZhe1 天前
docker常见命令
docker
正经教主2 天前
【FDE系列】阶段2:Day 43:Docker Compose — 多容器一键编排
人工智能·docker·fde
忆~遂愿2 天前
本地片库怎么在外面打开?Plex + cpolar 搭一套可远程访问的私人影音库
docker·容器