使用docker-compose搭建私有docker registry

前言

docker hub注册后只可以免费上传一个镜像,不过我们也可以使用其他免费docker仓库,比如腾讯云的免费docker仓库,不受上传限制。
当然我们也可以创建我们自己的私有仓库,再也不用担心上传速度受到影响,并且也更加安全。

示例说明

  1. 使用的是win10自带的docker
  2. 服务器使用的是centos系统
  3. 服务器ip地址以 182.61.60.219 为例(该IP只是示例,并不可用哦)
  4. 仓库端口以8050为例
  5. 仓库访问端口以5000为例
  6. 仓库UI访问端口以5051为例
  7. 本地局域网地址以192.168.2.106为例

示例目录

搭建私有registry

1.添加auth认证:

htpasswd加密方式 htpasswd命令是Apache的Web服务器内置工具,用于创建和更新储存用户名、域和用户基本认证的密码文件。

Reference

Use

  • docker run --entrypoint htpasswd registry -Bbn admin 123456 > ./auth/passwd // 新增用户并创建加密文件(如果系统没有安装此命令,可以使用docker容器中的命令来实现)
  • 利用htpasswd命令添加用户 htpasswd -bc htpasswd.user admin 123456
  • 在bin目录下生成一个 htpasswd.user 文件,用户名admin,密码:123456,默认采用MD5加密方式。
  • 在原有密码文件中增加下一个用户 htpasswd -b htpasswd.user Jack 123456
  • 去掉-c选项,即可在第一个用户之后添加第二个用户,依此类推。
  • 利用htpasswd命令删除用户名和密码 htpasswd -D htpasswd.user Jack
  • 利用htpasswd命令修改密码 htpasswd -b htpasswd.user Jack 123456

2.Config

windows:

默认使用https,使用http需要注册
修改daemon.json文件sudo vim /etc/docker/daemon.json
添加:{ "insecure-registries":["192.168.49.132:5000"]}
注: win10的配置在docker的设置里可以找到daemon配置选项

centos 系统

  • 在 /etc/docker/daemon.json 文件中写入:
    {
        "registry-mirror": [
          "https://registry.docker-cn.com"
        ],
        "insecure-registries": [
          "[私有仓库 ip:port]"
        ]
    }
  • 然后重启 docker
    ystemctl restart docker

3.docker-compose.yaml

    version: '2.1'
        services:
          registry:
            image: registry
            container_name: my_registry
            volumes:
              - ./registry:/var/lib/registry
              - ./auth:/auth
            environment:
              - REGISTRY_AUTH=htpasswd
              - REGISTRY_AUTH_HTPASSWD_REALM=Registry_Realm
              - REGISTRY_AUTH_HTPASSWD_PATH=/auth/passwd
            restart: always
            privileged: true
            ports:
              - "8050:5000"

4.Login to docker:

docker login http://182.61.60.219:8050

5.Upload to docker:

docker tag hello-world 192.168.2.106:5000/hello-world  //设置标签 加上仓库地址前缀
docker push 192.168.2.106:5000/hello-world

6.View image

GET http://192.168.2.106:5000/v2/_catalog
GET http://192.168.2.106:5000/v2/image_name/tags/list

Reference

7. 可以配置UI来美化仓库页面

version: '2.1'
services:
  registry-ui:
    image: konradkleine/docker-registry-frontend:v2
    container_name: my_registry_ui
    restart: always
    privileged: true
    environment:
      - ENV_DOCKER_REGISTRY_HOST=182.61.60.219
      - ENV_DOCKER_REGISTRY_PORT=8050
    ports:
      - "8051:80"

总结

  1. 有时我们系统中没有安装某个命令时,可以使用镜像中的命令来代替实现。
  2. 步骤7只是用来优化docker仓库页面的,如果不使用UI,那么只可以看到json格式的返回结果。
原博客链接:https://www.cnblogs.com/xpengp/
原文地址:https://www.cnblogs.com/xpengp/p/12714381.html