Docker添加代理遇阻求助:无法访问config.json及命令报错
解决Docker TLS Handshake Timeout及代理配置问题
一、配置用户级Docker代理(无需操作root目录)
直接在个人用户目录下创建Docker配置文件,无需修改root权限的文件:
- 创建用户专属的Docker配置目录:
mkdir -p ~/.docker - 在
~/.docker/config.json中写入代理配置,替换为公司实际代理地址:{ "proxies": { "default": { "httpProxy": "http://你的代理IP:端口", "httpsProxy": "http://你的代理IP:端口", "noProxy": "localhost,127.0.0.1,公司内部域名" } } } - 给配置文件设置安全权限:
chmod 600 ~/.docker/config.json
二、解决sudo执行Docker时的代理生效问题
方法1:让sudo继承用户代理环境变量
编辑sudoers配置文件(必须用visudo避免语法错误):
sudo visudo
添加一行(替换为你的用户名sam2004):
Defaults!docker env_keep="HTTP_PROXY HTTPS_PROXY NO_PROXY"
保存退出后,在当前终端设置临时代理环境变量:
export HTTP_PROXY=http://你的代理IP:端口 export HTTPS_PROXY=http://你的代理IP:端口 export NO_PROXY=localhost,127.0.0.1,公司内部域名
之后执行sudo docker pull即可自动应用代理。
方法2:sudo执行时直接指定用户配置路径
你之前的命令参数顺序错误,正确写法是把--config放在具体Docker命令前:
sudo docker --config /home/sam2004/.docker pull [镜像名称]
示例(拉取nginx镜像):
sudo docker --config /home/sam2004/.docker pull nginx
三、验证代理配置是否生效
执行以下命令测试,若输出代理服务器IP则说明配置成功:
sudo docker run --rm alpine wget -O - http://icanhazip.com
内容的提问来源于stack exchange,提问作者hell_storm2004
相关产品推荐
相关产品推荐

