centos 搭建docker私有仓库 支持https 带web页面

这几天需要给公司搭建一个docker仓库 ,看网上好多都是 写的很乱,要不就是你抄我的,我抄他的,看官方文档,又觉得很多不适用,在家搭建成功之后,把搭建的经验给大家分享,也是自己记录,学习!

注意:使用之前记得尽量 配置个域名啊,不然centos有些不好弄

注意, 可以直接看我github这个文档,写的已经很详细了,这个是专门centos下搭建私有仓库,支持配置自签证书 https://github.com/bugfan/mytools/tree/master/docker-rep

  1 安装docker docker-compose 

这一步去网上搜把,装好就行了

2 安装 acme.sh (是一个脚本程序,使你生成证书变得简单)

$ curl  https://get.acme.sh | sh

这条命令,会做的事情

1.把 acme.sh 安装到你的 home 目录下:
并创建 一个 bash 的 alias, 方便你的使用: acme.sh=~/.acme.sh/acme.sh

2.自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书.

3 生成证书

注意:如果您使用的时候,请把,hub.ymq.io 替换成自己域名,此域名需要dns 解析到安装私有仓库的服务器IP

$ cd ~/.acme.sh/
$ yum -y install socat
$ sh acme.sh  --issue -d hub.ymq.io   --standalone

如果看到如下信息,说明证书验证并生成成功,证书生成位置在:/root/.acme.sh/hub.ymq.io/ 下

Success
Verify finished, start to sign.
Cert success.
-----BEGIN CERTIFICATE-----

 4 复制证书
 

1.创建一个certs目录。

$ cd /opt/
$ mkdir -p certs

2.移动证书到certs目录。

$ cd ~/.acme.sh/
$ sh acme.sh  --installcert  -d  hub.ymq.io   \
        --key-file   /opt/certs/hub.ymq.io.key \
        --fullchain-file /opt/certs/domain.cert

 

5 身份验证

为用户创建一个带有一个条目的密码文件admin,密码为 admin

$ mkdir auth
$ docker run \
  --entrypoint htpasswd \
  registry:2 -Bbn admin admin > auth/htpasswd

 6 创建本地仓库目录

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  #仓库的访问信息

生成ca证书到刚才的目录 

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

  7 创建compose 并启动

创建下面的compose文件

version: "3"
services:
  registry:
    image: registry:latest
    container_name: "registry-srv"
    restart: always
    ports:
      - "443:443"
      # - "5000:5000"
    volumes:
      - /data/registry_dir/auth:/auth  
      - /data/registry_dir/certs:/certs   
      # - /data/registry_dir/conf/registry:/etc/docker/registry:ro
      - /data/registry_dir/registry:/var/lib/registry
    environment:
      - REGISTRY_AUTH=htpasswd
      - REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm
      - REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
      # - REGISTRY_HTTP_ADDR=0.0.0.0:443
      - REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.cert
      - REGISTRY_HTTP_TLS_KEY=/certs/domain.key    

 执行 docker-compose up 没有镜像会自动去拉去镜像,已经存在就会直接执行!这个时候registry已经是带证书的了,我们登录之后就keying直接push上去

 

 

要是有问题可以直接到 https://github.com/bugfan/mytools/tree/master/docker-rep/final 提isuue 或者直接联系我,微信是908958194

下面的方式也许可以帮到你!!

 docker run -it -p 80:8080 --name registry-web \
           -e REGISTRY_URL=https://registry:443/v2 \
           -e REGISTRY_TRUST_ANY_SSL=true \
           -e REGISTRY_BASIC_AUTH="ZG91eXU6ZG91eXUxMjMK" \  # echo "zxy:123" |base64 
           -e REGISTRY_NAME=localhost:443 hyper/docker-registry-web

docker run -d -p 443:443 --restart=always --name registry \
                -v /data/registry:/var/lib/registry \
                 -v /data/auth:/auth  -v /data/certs:/certs \
                    -e REGISTRY_AUTH=htpasswd \
                    -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
                    -e REGISTRY_AUTH_HTPASSWD_REALM='registry realm' \
                    -e REGISTRY_HTTP_ADDR=0.0.0.0:443  \
                    -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt   \
                    -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key    registry:2

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值