1、关于这个问题,其实官网已经做了相关说明https://docs.docker.com/registry/configuration/#/auth
2、下面我以htpasswd为例来说明registry的auth问题。
1)从docker hub拉取registry镜像:docker pull registry:2.4.1
2)编辑registry的配置文件config.yml,具体内容如下
version: 0.1
log:
fields:
service: registry
storage:
cache:
layerinfo: inmemory
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
auth:
htpasswd:
realm: basic-realm
path: /auth/htpasswd
其中:auth说明对registry进行pull和push操作需要进行认证
认证的方式是htpasswd,也就是用户名和密码认证
path指明在容器内htpasswd文件的存放位置
3)利用registry:2.4.1 创建registry容器:
docker run -d -p 5000:5000 --restart=always \
-v /opt/registry/auth/:/auth/ \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-v /opt/registry/:/var/lib/registry/ \
registry:2.4.1
注意:宿主机的/opt/registry/auth目录下有htpasswd文件,文件中内容产生发发如下:
docker run --entrypoint htpasswd registry:2.4.1 -Bbn admin admin >> /opt/registry/auth/htpasswd
其中admin admin分别是用户名和密码
4)验证registry容器是否创建成功
docker ps
docker@dockertest4:/opt/registry$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fa8a1d43e6cd registry "/entrypoint.sh /etc/" 19 minutes ago Up 12 minutes 0.0.0.0:5000->5000/tcp awesome_borg
5)这样在执行push和pull操作的时候应该是需要先进行docker login,然后进行再执行push和pull操作