搭建docker registry私有仓库并配置用户认证

搭建docker registry私有仓库并配置用户认证

在工作过程中,有时候会碰到需要把docker镜像放到另外一台机器上运行,提交到公网的docker hub太慢,如果每次导出文件传输再导入又太麻烦,还不方便进行版本控制、自动部署等操作。于是docker官方提供了一套简单的实现方案,就是Registry镜像。

docker-registry.png

话不多说,现在开始一步一步搭建私有docker仓库。

服务器IP:192.168.1.33

  1. 首先拉取镜像,执行一下命令:
docker pull registry
  1. 为了让数据持久化避免丢失,我们可以创建存储卷或者直接映射到宿主机目录。
docker create volume registry_data
docker run -d --restart always --name registry -p 5000:5000 -v registry_data:/var/lib/registry registry

或者映射到宿主机:

docker run -d --restart always --name registry -p 5000:5000 -v /data/registry:/var/lib/registry registry

查看私有仓库:

curl -XGET 127.0.0.1:5000/v2/_catalog

查看镜像版本列表

curl -XGET 127.0.0.1:5000/v2/image_name/tags/list
  1. push镜像到私有仓库
docker tag myapp 192.168.1.33:5000/myapp
docker push 192.168.1.33:5000/myapp
  1. 其他机器配置连接私有仓库

每台机器 docker 私有仓库配置vi /etc/docker/daemon.json写入以下内容:

{
    "insecure-registries": [
        "172.16.77.71:5000"
    ]
}

然后重启docker

  1. 设置私有仓库的用户认证

私有仓库搭建以后其他所有客户端均可以push、pull, docker官方提供认证方法对docker仓库进行权限保护

删除原启动的docker容器

docker stop docker-hub
docker rm docker-hub

创建保存账号密码的文件

mkdir  /opt/data/auth
docker run  --entrypoint htpasswd registry -Bbn  username  userpasswd > auth/htpasswd

重新启动容器

docker run -d -p 5000:5000 --restart=always --name registry \
    -v registry_data:/var/lib/registry \
    -v /opt/data/auth:/auth \
    -e "REGISTRY_AUTH=htpasswd" \
    -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
    -e  REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
    registry

现在客户端再pull、push会提示报错,无法提交。需要登录私有仓库
登录:

docker login -u username -p userpasswd 192.168.1.33:5000

退出:

docker logout 192.168.1.33:5000

至此,一个带认证的docker镜像仓库搭建完成了。

微信、知乎、、CSDN等平台搜索“道听真说”,点点关注不迷路!

如果本文对你有一点点帮助,请点个赞支持一下,谢谢啦❤️

近期更新文章:

  • 全局唯一ID设计

  • 为什么我的数据库那么慢,教你提升10倍MySQL性能

  • 安利Markdown文档编写利器Typora

  • 高可用MySQL数据库之PXC集群

你可能感兴趣的:(搭建docker registry私有仓库并配置用户认证)