前言
通过Docker部署镜像仓库,实现私有Docker镜像仓库,也可以作为镜像源
登录DockerHub(可选)
- 如果需要作为DockerHub的镜像仓库,需要先登录DockerHub
通过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
生成密码输出到文件
<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.json1 2 3
| { "insecure-registries": ["http://<ip>:5000"] }
|
完成
参考文献
腾讯云开发者社区——民工哥
阿里云开发者社区——咸鱼学Python
知乎——萌褚
哔哩哔哩——科技lion
哔哩哔哩——黑马程序员