我让它正常工作,但现在它停了。我尝试了以下命令,但没有效果:
Docker运行-dns 8.8.8.8 base ping google.com
Docker运行base ping google.com
Sysctl -w net.ipv4。Ip_forward =1 -在主机和容器上
我得到的是未知主机google.com。Docker 0.7.0版本
什么好主意吗?
P.S. ufw也被禁用了
我让它正常工作,但现在它停了。我尝试了以下命令,但没有效果:
Docker运行-dns 8.8.8.8 base ping google.com
Docker运行base ping google.com
Sysctl -w net.ipv4。Ip_forward =1 -在主机和容器上
我得到的是未知主机google.com。Docker 0.7.0版本
什么好主意吗?
P.S. ufw也被禁用了
当前回答
如果你运行的Docker是无根的,并且遇到了这个问题,在安装过程中,iptables可能没有正确配置,主要是因为在Docker抱怨iptables时使用了——skip-iptables选项:
[ERROR] Missing system requirements. Run the following commands to
[ERROR] install the requirements and run this tool again.
[ERROR] Alternatively iptables checks can be disabled with --skip-iptables .
########## BEGIN ##########
sudo sh -eux <<EOF
# Load ip_tables module
modprobe ip_tables
EOF
########## END ##########
让我们检查一下这是否是问题所在:是否加载了ip_tables内核模块?
sudo modprobe ip_tables
如果没有输出,这个答案可能对您没有帮助(无论如何您都可以尝试)。否则,输出如下所示:
modprobe: FATAL: Module ip_tables not found in directory /lib/modules/5.18.9-200.fc36.x86_64
让我们来解决它!
首先,卸载Docker rootless(不需要通过systemctl停止服务,脚本会处理):
dockerd-rootless-setuptool.sh uninstall --skip-iptables
确保安装了iptables包,尽管它是由主要发行版默认提供的。
现在,让ip_tables模块对modprobe可见并安装它(多亏了这个):
sudo depmod
sudo modprobe ip_tables
现在,重新安装Docker rootless:
dockerd-rootless-setuptool.sh install
如果它不打扰iptables,你就完成了,问题应该得到解决。不要忘记启用服务(即systemctl enable——user——now docker)!
其他回答
我使用DOCKER_OPTS="——dns 8.8.8.8",后来发现我的容器不能直接访问互联网,但可以访问我的公司内部网。我把DOCKER_OPTS改为如下:
DOCKER_OPTS="--dns <internal_corporate_dns_address"
替换internal_corporate_dns_address与我们的DNS的IP地址或FQDN和重启docker使用
sudo service docker restart
然后生成我的容器并检查它是否可以访问互联网。
只是在这里添加这个,以防有人在运行docker的virtualbox容器中遇到这个问题。我将virtualbox网络重新配置为桥接而不是nat,问题就消失了。
对于Ubuntu 19.04使用openconnect 8.3进行VPN,我必须将/etc/resolve.conf符号链接到systemd中的文件(与answerby wisbucky相反)
执行ln -sf /etc/resolv.conf /run/systemd/resolve/resolv.conf
调试步骤
连接到公司VPN 在/etc/resolv.conf或/run/systemd/resolve/resolv.conf中查找正确的VPN设置 无论哪个有正确的DNS设置,我们都会将其符号链接到另一个文件 (提示:在赋值的左边放置一个设置正确的)
Docker版本:Docker版本19.03.0-rc2,构建f97efcc
您可能已经使用dns选项启动了docker—dns 172.x.x.x
我有同样的错误,并从/etc/default/docker删除选项
行:
# Use DOCKER_OPTS to modify the daemon startup options.
DOCKER_OPTS="--dns 172.x.x.x"
缺少代理设置也可能导致无法上网。在这种情况下,——network host也可能不起作用。代理可以通过设置环境变量http_proxy和https_proxy来配置:
docker run -e "http_proxy=YOUR-PROXY" \
-e "https_proxy=YOUR-PROXY"\
-e "no_proxy=localhost,127.0.0.1" ...
不要忘记设置no_proxy,否则所有请求(包括对localhost的请求)都将通过代理。
更多信息:Archlinux Wiki中的代理设置。