在国内用docker去拉取image时会很慢, 此时可以配置镜像加速器。国内很多云服务商都提供了国内加速器服务,例如:
一、配置加速器
1
|
vim /etc/docker/daemon.json
|
1
2
3
4
5
6
|
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
|
注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。
之后重新启动服务
1
2
|
sudo systemctl daemon-reload
sudo systemctl restart docker
|
二、docker pull代理
在执行docker pull时,是由守护进程dockerd来执行。 因此,代理需要配在dockerd的环境中。 而这个环境,则是受systemd所管控,因此实际是systemd的配置
1
|
sudo mkdir -p /etc/systemd/system/docker.service.d
|
1
|
sudo touch /etc/systemd/system/docker.service.d/proxy.conf
|
在这个proxy.conf文件(可以是任意*.conf的形式)中,添加以下内容:
1
2
3
4
|
[Service]
Environment="HTTP_PROXY=http://USERNAME:PASSWORD@[your.proxy.server]:[port]"
Environment="HTTPS_PROXY=http://USERNAME:PASSWORD@[your.proxy.server]:[port]0"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"
|
之后重新启动服务
1
2
|
sudo systemctl daemon-reload
sudo systemctl restart docker
|
三、Container代理
1、用户级代理
1
|
vim ~/.docker/config.json
|
1
2
3
4
5
6
7
8
9
10
11
|
{
"proxies":
{
"default":
{
"httpProxy": "http://192.168.0.54:7890",
"httpsProxy": "http://192.168.0.54:7890",
"noProxy": "localhost,127.0.0.1,.example.com"
}
}
}
|
这种方法默认在所有配置修改后启动的容器生效
2、容器级代理
容器的网络代理,也可以直接在其运行时通过-e注入http_proxy等环境变量。docker-compose的是要配置environment
格式如下:
1
2
3
4
5
|
web:
environment:
HTTP_PROXY: 'http://192.168.0.54:7890'
HTTPS_PROXY: 'http://192.168.0.54:7890'
NO_PROXY: 'localhost, *.test.lan'
|
四、docker build代理
虽然docker build的本质,也是启动一个容器,但是环境会略有不同,用户级配置无效。 在构建时,需要注入http_proxy等参数
1
2
3
4
5
|
docker build . \
--build-arg "HTTP_PROXY=http://192.168.0.54:7890" \
--build-arg "HTTPS_PROXY=http://192.168.0.54:7890" \
--build-arg "NO_PROXY=localhost,127.0.0.1,.example.com" \
-t your/image:tag
|