Zacard's Notes

Docker学习系列三:Registry

什么是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)认证的域名方式启动私服

参考:官方说明

如要使用自签名证书方式启动,参考:官方说明

坚持原创技术分享,您的支持将鼓励我继续创作!

热评文章