docker 无法从 LXC 容器内部访问互联网

docker 无法从 LXC 容器内部访问互联网

我使用以下命令在 RedHat 8.6 上启动了一个 Ubuntu 20.04 LXC 容器

lxc launch ubuntu:20.04 --storage default -c security.privileged=true -c boot.autostart=true --network lxdbr0

我在容器中安装了 docker 并配置了网络代理设置,/etc/systemd/system/docker.service.d/http-proxy.conf然后重新启动了 docker 服务。


[Service]
Environment="HTTP_PROXY=<proxy address redacted>"
Environment="HTTPS_PROXY=<proxy address redacted>"

当我尝试拉取图像时,出现 TLS 握手超时错误

root@still-katydid:~# docker pull nginx
Using default tag: latest
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: TLS handshake timeout

看着/var/log/syslog我可以看到一些错误

Dec  8 11:57:36 still-katydid dockerd[9606]: time="2022-12-08T11:57:36.486272382Z" level=warning msg="Your kernel does not support cgroup blkio weight"
Dec  8 11:57:36 still-katydid dockerd[9606]: time="2022-12-08T11:57:36.486290117Z" level=warning msg="Your kernel does not support cgroup blkio weight_device"
Dec  8 11:57:36 still-katydid dockerd[9606]: time="2022-12-08T11:57:36.487001498Z" level=info msg="Loading containers: start."
Dec  8 11:57:36 still-katydid dockerd[9606]: time="2022-12-08T11:57:36.489111401Z" level=warning msg="Running modprobe bridge br_netfilter failed with message: modprobe: WARNING: Module bridge not found in directory /lib/modules/4.18.0-372.9.1.el8.x86_64\nmodprobe: WARNING: Module br_netfilter not found in directory /lib/modules/4.18.0-372.9.1.el8.x86_64\n, error: exit status 1"
Dec  8 11:57:36 still-katydid dockerd[9606]: time="2022-12-08T11:57:36.591405424Z" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"

我知道代理地址设置是正确的,因为我也在我的.bashrc文件中配置了它们,并且我可以通过 curl 地址来https://www.bbc.co.uk成功地。

主机和容器上的防火墙均被禁用。

我已多次重启容器和主机。

答案1

我解决了我的问题。我的密码中有一个特殊字符!。我已经用 将其转义,%21但事实证明 docker 需要双重%%

因此,对于 docker 代理密码,!需要使用以下字符进行转义%%21

这里有更多信息https://docs.docker.com/config/daemon/systemd/

相关内容