dockerd 代理
systemd
执行docker pull时,是由dockerd来执行。因此,代理需要配在dockerd的环境中。受systemd管控,因此实际是systemd的配置。
/lib/systemd/system/docker.service 类似文件中直接编写配置
而 rootless西,需要修改的是 ~/.config/systemd/user/docker.service
systemd也从
/etc/systemd/system/docker.service.d
和/lib/systemd/system/docker.service.d
文件夹下读取配置,所以可以再其中一个文件夹中创建一个名为http-proxy.conf的文件用来保存代理信息
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80"
Environment="HTTPS_PROXY=https://proxy.example.com:443"
Environment="NO_PROXY=your-registry.com,10.10.10.10,*.example.com"
代理值中的特殊字符(例如:
#?!()[]{}
)必须使用 进行双重转义%%
多个 NO_PROXY
变量的值用逗号分隔,而且可以使用通配符(*),极端情况下,如果 NO_PROXY=*
,那么所有请求都将不通过代理服务器。
重新加载配置文件,重启 dockerd
sudo systemctl daemon-reload
sudo systemctl restart docker
检查确认环境变量已经正确配置:
sudo systemctl show --property=Environment docker
etc/docker/daemon.json
在 etc/docker/daemon.json 中配置也是一样的
{
"registry-mirrors": ["..."],
"proxies": {
"http-proxy": "http://[user]:[password]@[host]:[port]",
"https-proxy": "http://[user]:[password]@[host]:[port]",
"no-proxy": "[registry.domain]"
}
}
注意
在 Docker Engine 23.0 及更高版本中,您可以在daemon.json文件中为守护进程配置代理行为
这些配置会覆盖默认的docker.servicesystemd 文件。
但若位于 HTTP 或 HTTPS 代理服务器后面(例如在公司设置中),则必须在 systemd 服务文件中指定守护程序代理配置,而不是在文件中daemon.json或使用环境变量。
container 代理
~/.docker/config.json
在容器运行阶段,需要统一的给容器配置一个代理。
则需要配置 ~/.docker/config.json
以下配置,只在Docker 17.07及以上版本生效。
{
"auths": {
"..."
},
"proxies": {
# 通用配置,会对当前客户端连接的所有Docker服务生效
"default": {
"httpProxy": "http://proxy.example.com:1080",
"httpsProxy": "https://proxy.example.com:7890",
"noProxy": "*.test.example.com,.example.org,127.0.0.0/8"
},
# 如果只对某个Docker服务时配置代理,则需要通过 docker-host: proxy-settings的方式在下面配置
"tcp://docker-daemon1.example.com": {
"noProxy": "*.internal.example.net"
}
}
}
命令行传参
docker run --env HTTP_PROXY="http://<user>:<password>@<host>:<port>" <image:tag>
build代理
略,类同 container 代理。
注意
不要在Dockerfile中使用ENV指令配置构建过程中使用到的代理配置
使用环境变量配置构建过程中用到的代理配置会把代理服务器打包进镜像中,如果代理服务器是私有化部署的服务器,通过此镜像创建的容器可能访问不到代理服务器,产生难以理解的错误。
同时,由于代理配置中可能包含敏感信息,把代理服务器信息嵌入到镜像中也有可能造成一些安全隐患。
本文标题:分清在容器语镜下的:dockerd、container、build代理
本文连接:https://blog.dextercai.com/archives/227.html
除另行说明,本站文字内容采用创作共用版权 CC-BY-NC-ND 4.0 许可协议,版权归本人所有。
除另行说明,本站图片内容版权归本人所有,未经许可前,严禁以任何形式的使用。
即日起视情况关闭全站评论区,您可以通过关于页面的电邮地址和我取得联系,谢谢