我正在尝试运行docker login,但出现以下错误:
Error response from daemon: Get "https://[removed_id_for_stackoverflow].dkr.ecr.us-east-1.amazonaws.com/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
Run Code Online (Sandbox Code Playgroud)
我的~/.bash.rc文件中有以下内容:
export HTTP_PROXY="http://192.168.1.1:8080"
export HTTPS_PROXY="http://192.168.1.1:8080"
export https_proxy="http://192.168.1.1:8080"
export https_proxy="http://192.168.1.1:8080"
export ftp_proxy="http://192.168.1.1:8080"
export no_proxy="localhost,127.0.0.1,::1"
Run Code Online (Sandbox Code Playgroud)
如果我运行curl https://www.google.com,我可以获得有效的响应,确认这些设置有效。如果我删除这些环境变量,那么我的curl命令将不再起作用,所以我很确定从环境变量的角度来看它配置正确。
根据Docker Hub 在代理后面登录,您可以在运行时将代理选项传递到命令行中docker login;但是,我已经尝试过,结果是相同的。请参阅下面的示例:
root@my-host:~/.docker# HTTPS_PROXY=http://192.168.1.1:8080 aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin $(aws sts get-caller-identity --output text --query 'Account').dkr.ecr.us-east-1.amazonaws.com >/dev/null
Error response from daemon: Get "https://[removed_for_stack_overflow].dkr.ecr.us-east-1.amazonaws.com/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
Run Code Online (Sandbox Code Playgroud)
我尝试将代理设置更改为出现在之前docker login而不是aws,尝试使用HTTP_PROXY而不是HTTPS_PROXY,但仍然没有运气。指定代理选项的顺序似乎并不重要。
我还有一个名为的文件~/.docker/config.json,其中包含以下代理信息:
{
"proxies":
{
"default":
{
"httpProxy": "http://192.168.1.1:8080",
"httpsProxy": "http://192.168.1.1:8080"
}
}
}
Run Code Online (Sandbox Code Playgroud)
即使使用此设置,docker 登录似乎仍无法正常工作并提供相同的结果。
atl*_*ine 12
这里记录了docker daemon配置代理的正确方法,我摘录了一些内容供大家参考:
为 docker 服务创建一个 systemd 放置目录:
sudo mkdir -p /etc/systemd/system/docker.service.d创建一个名为
/etc/systemd/system/docker.service.d/http-proxy.conf添加HTTP_PROXY/HTTPS_PROXY环境变量的文件:配置示例:
Run Code Online (Sandbox Code Playgroud)[Service] Environment="HTTP_PROXY=http://proxy.example.com:80" Environment="HTTPS_PROXY=https://proxy.example.com:443" Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp"刷新更改并重新启动 Docker
Run Code Online (Sandbox Code Playgroud)sudo systemctl daemon-reload sudo systemctl restart docker验证配置是否已加载并与您所做的更改相匹配,例如:
sudo systemctl show --property=Environment docker
| 归档时间: |
|
| 查看次数: |
10816 次 |
| 最近记录: |