zoukankan      html  css  js  c++  java
  • Docker 构建私有仓库

    Docker Hub

    目前Docker官方维护了一个公共仓库Docker Hub,其中已经包含了数量超过15000的镜像。大部分需求都可以通过在Docker Hub中直接下载镜像来实现。

    可以在https://hub.docker.com 免费注册一个Docker账号。
    在命令行输入执行docker login,输入用户名及密码可以登录Docker Hub,可以通过docker logout退出登录。

    通过docker search命令可以查找官方仓库中的镜像,并利用docker pull命令将镜像下载到本地。
    用户登录后也可以通过docker push 命令将自己的镜像推送到Docker Hub。

    私有仓库

    有时候使用Docker Hub这样的公有仓库可能不方便,用户可以创建自己的私有仓库。
    docker-registry是官方提供的工具,可以用于构建私有的镜像仓库。

    安装运行docker-registry
    可以通过官方registry镜像来运行。默认情况下,仓库会被创建在 /var/lib/registry 目录下。
    可以通过 -v 参数来将镜像文件放在本地的指定路径

    docker run --name registry -d 
    -p 5000:5000 --restart=always 
    -v /opt/data/registry:/var/lib/registry 
    registry
    

    创建好私有仓库之后,就可以使用 docker tag 来标记一个镜像,然后把它推送到仓库。
    先查看本地镜像:

    docker image ls
    

    使用 docker tag 将test-web:latest这个镜像标记为 127.0.0.1:5000/test-web:latest :

    docker tag test-web:latest 127.0.0.1:5000/test-web:latest
    

    使用 docker push 上传标记的镜像:

    docker push 127.0.0.1:5000/test-web:latest
    

    使用 curl 查看仓库中的镜像

    curl 127.0.0.1:5000/v2/_catalog
    

    如果可以看到 {“registry”:[“test-web”]} ,表明镜像已经被上传成功了。

    先删除本地已有的镜像,再尝试从私有仓库下载这个镜像

    docker image rm 127.0.0.1:5000/test-web:latest
    docker pull 127.0.0.1:5000/test-web:latest
    

    注意事项:
    如果不想用127.0.0.1:5000作为仓库地址,比如想让本网段的其他主机也能把镜像推送到仓库,当把把仓库地址改为如192.168.0.101:5000时镜像还是无法推送成功。这是因为Docker 默认不允许非HTTPS方式推送镜像,我们可以通过Docker配置选项来取消这个限制。
    centos7下可以修改/etc/docker/daemon.json 文件,写入如下内容:

    {
      "registry": [
        "https://registry.docker-cn.com"
      ],
      "insecure-registries": [
        "192.168.0.101:5000"
      ]
    }
    

     

  • 相关阅读:
    Windows 7安装 OneDrive
    MySQL8.0降级为MySQL5.7
    Windows和Linux下安装Rsync
    Jenkins持续集成工具安装
    Pure-Ftpd安装配置
    redis安装配置
    Tcp粘包处理
    .Net Core Socket 压力测试
    使用RpcLite构建SOA/Web服务(Full .Net Framework)
    使用RpcLite构建SOA/Web服务
  • 原文地址:https://www.cnblogs.com/coding-diary/p/12007210.html
Copyright © 2011-2022 走看看