Docker搭建带有访问认证的私有仓库

以下步骤均为本人亲自踩坑,历经数次失败,最终搭建成功 
一、环境信息: 
操作系统:CentOS 7 
Docker版本:1.12.5 (更高版本应该类似) 
registry:2.4.1 
registry-web: hyper/docker-registry-web:latest 
二、搭建步骤: 
1、拉取镜像registry(仓库)和registry-web(用于访问仓库的UI界面):

docker pull hyper/docker-registry-web
docker pull registry:2.4.1
  • 1
  • 2
  • 3

2、下载docker-compose(一种简化复杂容器应用的利器,具体使用可参见官网) 
官网下载链接:https://docs.docker.com/compose/install/ 
懒人可以直接使用下面的命令即可下载

curl -L https://github.com/docker/compose/releases/download/1.13.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  • 1
  • 2

下载完成后更改docker-compose的权限:

chmod 755 /usr/local/bin/docker-compose
  • 1
  • 2

3、创建几个目录,用于存放配置文件和作为私有仓库的镜像存储目录

mkdir -p /data/registry_dir/conf/registry   #存放仓库的配置信息
mkdir -p /data/registry_dir/conf/registry-web #存放仓库UI界面的配置信息
mkdir -p /data/registry_dir/registry  #存放仓库的镜像
mkdir -p /data/registry_dir/db  #仓库的访问信息
  • 1
  • 2
  • 3
  • 4
  • 5

4、生成证书

openssl req -new -newkey rsa:4096 -days 365 
                -subj "/CN=localhost" 
                -nodes -x509  
                -keyout /data/registry_dir/conf/registry-web/auth.key 
                -out /data/registry_dir/conf/registry/auth.cert
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

5、创建yml配置文件 
###创建仓库的配置文件 
vim /data/registry_dir/conf/registry/config.yml

version: 0.1

storage:
  filesystem:
    rootdirectory: /var/lib/registry

http:
  addr: 0.0.0.0:5000

auth:
  token:
    realm: http://localhost:8080/api/auth
    service: localhost:5000
    issuer: 'admin'
    rootcertbundle: /etc/docker/registry/auth.cert
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

###创建仓库UI的配置文件 
vim /data/registry_dir/conf/registry-web/config.yml

registry:
    url: http://registry-srv:5000/v2
    name: localhost:5000
    readonly: false
    auth:
        enabled: true
        issuer: 'admin'
        key: /conf/auth.key
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

###创建docker-compose启动配置文件 
vim /data/registry_dir/docker-compose.yml

version: '2'
services:
  registry-web:
    image: hyper/docker-registry-web:latest
      ports:
        - 8080:8080
      volumes:
         - /data/registry_dir/conf/registry-web:/conf:ro
         - /data/registry_dir/db:/data
     networks:
       - registry-net
     depends_on:
        - registry
     restart: always
registry:
  image: registry:2.4.1
  ports:
    - 5000:5000
  volumes:
    - /data/registry_dir/conf/registry:/etc/docker/registry:ro
    - /data/registry_dir/registry:/var/lib/registry
  environment:
    - REGISTRY_STORAGE_DELETE_ENABLED=true
  networks:
    - registry-net
  restart: always
networks:
  registry-net:
  #driver: default
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

6、启动容器

docker-compose up -d
  • 1
  • 2

搭建完成,查看镜像运行情况:docker ps | grep registry 
正常运行的话,接下来就可以愉快的访问你的镜像仓库了,打开浏览器,输入localhost:8080(从其他机器访问该仓库的话,输入ip:port的方式就可以)默认用户名密码是admin/admin 
这里写图片描述

也可以从后台验证配置是否准确:

docker login localhost:5000
  • 1
  • 2

输入正确的用户密码会提示: 
这里写图片描述

如果密码错,则会提示: 
这里写图片描述

至此,带有访问认证的docker私有仓库搭建完毕,也可参考官网通过docker run的方式, 
链接:https://hub.docker.com/r/hyper/docker-registry-web/

另外需注意,首次向仓库push镜像时会提示权限问题,需要登录web给admin用户分配一下权限。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuhaitao8922/article/details/72996993
原文地址:https://www.cnblogs.com/adolfmc/p/9195576.html