【笔记】通过Docker部署镜像仓库

前言

通过Docker部署镜像仓库,实现私有Docker镜像仓库,也可以作为镜像源

登录DockerHub(可选)

  • 如果需要作为DockerHub的镜像仓库,需要先登录DockerHub
1
docker login

通过Docker部署镜像仓库

无需认证

-v /root/Registry/registry:/var/lib/registry:如果作为私有仓库,可以映射仓库存储目录
-e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io:如果需要作为DockerHub的镜像仓库,需要指定上游Docker镜像仓库地址为DockerHub

1
docker run -d --name docker-registry -p 5000:5000 registry:2

需要认证

创建目录

1
mkdir -p /root/Registry/auth

生成密码

下载依赖
Debian
1
apt install apache2-utils
CentOS
1
yum install httpd
生成密码输出到文件

<username>:用户名
<password>:密码

1
htpasswd -Bbn <username> <password> > /root/Registry/auth/htpasswd

通过Docker部署

-v /root/Registry/registry:/var/lib/registry:如果作为私有仓库,可以映射仓库存储目录
-e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io:如果需要作为DockerHub的镜像仓库,需要指定上游Docker镜像仓库地址为DockerHub
-e "REGISTRY_AUTH=htpasswd":指定登录校验方式
-v /root/Registry/auth:/auth -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd":映射存放密码的目录,并指定存放密码的文件

1
docker run -d --name docker-registry -p 5000:5000 -v /root/Registry/registry:/var/lib/registry -v /root/Registry/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry:2

通过Docker部署第三方GUI(可选)

-e REGISTRY_URL=http://127.0.0.1:5000:配置镜像仓库地址
-e REGISTRY_TITLE=<title>:配置站点标题

1
docker run -d -p 80:80 -e REGISTRY_URL=http://127.0.0.1:5000 -e REGISTRY_TITLE=<title> joxit/docker-registry-ui:static

Docker客户端

查看镜像仓库内的镜像

-u <username>:<password>:如果需要认证,需要提供用户名和密码
<ip>:镜像仓库IP地址

1
curl http://<ip>:5000/v2/_catalog

修改镜像源

配置信任地址

  • 如果镜像仓库不是HTTPS,会报错:Get http://127.0.0.1:5000/v2/: http: server gave HTTP response to HTTPS client
  • 添加了信任地址后,可以通过HTTP访问

<ip>:镜像仓库IP地址

/etc/docker/daemon.json
1
2
3
{
"insecure-registries": ["http://<ip>:5000"]
}

完成

参考文献

腾讯云开发者社区——民工哥
阿里云开发者社区——咸鱼学Python
知乎——萌褚
哔哩哔哩——科技lion
哔哩哔哩——黑马程序员