Docker Registry私有仓库搭建

registry本地私有仓库搭建,基于CentOS

1.下载registry镜像

docker pull registry:2

2.在registry镜像上启动容器

docker run -d -p 5008:5000 --restart=always --name registry -v /mnt/registry:/var/lib/registry registry:2

3.查看结果

docker ps

在这里插入图片描述

到此,私有镜像仓库已经搭建成功,但此时的仓库没有安全认证,一般不会使用;我们还必须为本地搭建的私有镜像仓库配置认证证书、登录账号等才能用于真正的服务

配置镜像仓库的证书及密码

1.使用openssl生成证书

mkdir registry && cd registry && mkdir certs && cd certs
openssl req -x509 -days 3650 -nodes -newkey rsa:2048 -keyout domain.key -out domain.crt

上述指令说明:

  • 进入home目录,执行第一行指令,创建registry和certs目录
  • 此时执行第二个指令,用于生成证书和密钥,执行结果如下:
    在这里插入图片描述
  • 红线圈出的地方,是配置的域名,自定义即可(确保在/etc/hosts中已经创建了IP和域名的映射),如:
  • 127.0.0.1 repo.oonoo.com

到此证书和密钥已经生成

利用htpasswd指令生成用户名和密码
在前面创建的registry目录下,创建新目录

mkdir auth

然后,执行如下指令:

htpasswd -Bbn tom 123 > auth/htpasswd

执行之后,即可将创建用户名为tom密码为123的密码文件htpasswd。

完成上面的准备工作后,就可以正式启动带有安全认证的本地私有镜像仓库了,指令如下:

docker run -d -p 5008:5000 --restart=always --name registry -v /mnt/registry:/var/lib/registry -v `pwd`/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v `pwd`/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key registry:2

指令说明:

-e参数在启动Docker Registry 仓库服务时配置了认证证书和和连接的用户信息。
上述指令是在前面生成的registry目录下执行的,如果在其他目录下执行,
需要修改-v参数中auth和certs所在的宿主机文件路径。

使用docker ps查看容器的运行状况,确定是否成功

完成Registry本地镜像仓库服务启动后,还需要在搭建了Docker Registry本地镜像仓库所在的Docker主机上配置供其他Docker机器访问的接口,具体指令如下

mkdir -p /etc/docker/certs.d/repo.oonoo.com:5008
cp certs/domain.crt /etc/docker/certs.d/repo.oonoo.com:5008

指令说明如下:

上述指令仍然是在前面创建的registry目录下执行,第一条指令用于创建一个证书目录,
要注意的是repo.oonoo.com:5008目录名要与启动的Docker Registry服务地址端口一致;
第二条指令将生成的domain.crt证书复制到刚才创建的证书目录下

测试验证

通过前面几个步骤的操作,配置有安全认证的Docker Registry本地私有仓库就已经完成启动设置

安装了registry仓库的主机上测试
先登录仓库

[root@icjvlxh7jag7xxkj-0123307 docker]# docker login repo.oonoo.com:5008
Username: oonoo
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

推送镜像到本地仓库:

[root@icjvlxh7jag7xxkj-0123307 docker]# docker push repo.oonoo.com:5008/test_box
Using default tag: latest
The push refers to repository [repo.oonoo.com:5008/test_box]
84009204da3f: Pushed 
latest: digest: sha256:74e4a68dfba6f40b01787a3876cc1be0fb1d9025c3567cf8367c659f2187234f size: 527
[root@icjvlxh7jag7xxkj-0123307 docker]# 

其他主机上测试
要想在其他主机上访问前面配置的registry私有仓库,需要在其他主机上做如下简单的处理,执行如下指令:

mkdir -p /etc/docker/certs.d/repo.oonoo.com:5008
cp domain.crt /etc/docker/certs.d/repo.oonoo.com:5008/

说明如下:

第一条指令创建docker访问的接口目录;第二条指令,将之前配置registry服务器上生成的certs/domain.crt复制到目录下面(请先将证书domain.crt复制到当前机器)
然后在/etc/hosts配置域名和IP的映射: xx.xx.xx.xx  repo.oonoo.com 

登录

[root@icjvlxh7jag7xxkj-0123306 docker]# docker login repo.oonoo.com:5008
Username: oonoo
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

推送镜像到配置的私有仓库(私有仓库在其他主机上)

[root@icjvlxh7jag7xxkj-0123306 ~]# docker push repo.oonoo.com:5008/busybox_two
Using default tag: latest
The push refers to repository [repo.oonoo.com:5008/busybox_two]
84009204da3f: Pushed 
latest: digest: sha256:74e4a68dfba6f40b01787a3876cc1be0fb1d9025c3567cf8367c659f2187234f size: 527
[root@icjvlxh7jag7xxkj-0123306 ~]#

结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值