![docker 无法从 LXC 容器内部访问互联网](https://linux22.com/image/782504/docker%20%E6%97%A0%E6%B3%95%E4%BB%8E%20LXC%20%E5%AE%B9%E5%99%A8%E5%86%85%E9%83%A8%E8%AE%BF%E9%97%AE%E4%BA%92%E8%81%94%E7%BD%91.png)
我使用以下命令在 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