什么是registry
Docker Registry是一个docker仓库,用来存储和分享docker镜像。类似于Github。
为什么需要docker registry
这里应该说为什么需要配置一个私有的docker registry。我们知道,已经有dockerhub了,而且官方也提供私有仓库的功能。
因为访问官方的dockerhub,是要良好的网络。而且当我们部署发布的时候,肯定不希望dockeruhb在维护或者故障。而我们配置私有的docker registry可以很好的避免此类问题。
部署私有的docker registry
pull官方的registry
docker pull registry:2.4
运行registry
命令:
docker run -d -p 5000:5000 --restart=always --name registry -v /data/registry:/var/lib/registry registry:2.4
使用Compose file编排(创建docker-compose.yml):
registry:
restart: always
image: registry:2.4
container_name: registry
ports:
- 5000:5000
volumes:
- /data/registry:/var/lib/registry
然后使用命令:
docker-compose up -d
配置授权用户的registry
删除启动的registry:
docker stop registry&docker rm registry
或者:
docker-compose stop registry&docker-compose rm registry
创建授权用户目录并且创建一个授权用户
mkdir auth
docker run --rm --entrypoint htpasswd registry:2.4 -Bbn testuser testpasswd > auth/htpasswd
以授权用户的方式启动reigstry
命令:
docker run -d -p 5000:5000 --restart=always --name registry -v /data/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" registry:2.4
Compose file编排方式:
registry:
restart: always
image: registry:2.4
container_name: registry
ports:
- 5000:5000
volumes:
- /data/registry:/var/lib/registry
- /data/auth:/auth
environment:
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
然后使用命令:
docker-compose up -d
查看log是否启动成功:
docker logs registry
登录到私服:
docker login localhost:5000
输入用户名、密码等信息。然后上传镜像测试:
docker pull busybox
docker tab busybox localhost:5000/busybox
docker push localhost:5000/busybox
使用证书(CA)认证的域名方式启动私服
参考:官方说明
如要使用自签名证书方式启动,参考:官方说明