docker被墙了,docker又可以了...
,经历了几次被折腾了,我决定彻底在团队内部解决这一问题。
在使用该方案前,配置过代理,也设置过阿里云的仓库源,但效果都不太理想,最终打造了内部的仓库镜像,完美的解决团队在拉取docker镜像时遇到的问题。
前提
预实现当前功能,需要满足以下前提:
- 有可用的代理
- 有个docker环境的主机
基础实现
在这直接给docker-compose.yml
文件:
services:
registry:
image: registry:2
container_name: registry
environment:
- HTTP_PROXY=http://192.168.20.3:7890
- HTTPS_PROXY=http://192.168.20.3:7890
ports:
- "5000:5000"
volumes:
- /var/lib/registry:/var/lib/registry
- /etc/docker/registry:/etc/docker/registry
其中:
- 将
http://192.168.20.3:7890
修改为你本地的代理值 - 本地创建
/var/lib/registry
用于存储docker镜像 - 本地创建
/etc/docker/registry
,并在/etc/docker/registry
下创建config.yml
,内容如下:
version: 0.1
log:
fields:
service: registry
storage:
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
proxy:
remoteurl: https://registry-1.docker.io
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
启动服务
首次使用docker compose up -d
启动,非首次使用docker compose start
启动.
使用镜像
最后在需要使用局域网仓库的计算机上编辑:/etc/docker/daemon.json
,内容如下:
{
"registry-mirrors": ["http://192.168.11.6:5000"]
}
- 将
192.168.11.6
换成运行docker镜像服务的IP地址即可。
编辑文件后,重启docker(debian下重启命令为: sudo systemctl daemon-reload
, sudo systemctl restart docker
),则最后在执行docker pull
时,便走局域网仓库了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。