我让它正常工作,但现在它停了。我尝试了以下命令,但没有效果:
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也被禁用了
当前回答
在windows(8.1)我杀死了virtualbox接口(通过任务管理),它解决了这个问题。
其他回答
最初我的docker容器能够连接到外部互联网(这是一个运行在Amazon EC2上的docker服务/容器)。
由于我的应用程序是一个API,我随后创建了我的容器(它成功地拉出了所需的所有包),更新了我的IP表,将所有流量从端口80路由到端口,我的API(在docker上运行)正在监听。
后来,当我试图重建容器时,它失败了。经过一番努力,我发现我的上一个步骤(设置IPTable端口转发规则)搞乱了docker的外部网络功能。
解决方案:停止IPTable服务:
Sudo服务iptables停止
重启Docker守护进程:
Sudo服务docker重启
然后,尝试重新构建容器。希望这能有所帮助。
跟进
我完全忽略了一点,我不需要打乱IP表,就可以将进入的流量转发到80,到运行在docker上的API正在运行的端口。相反,我只是将端口80别名为docker中API正在运行的端口:
Docker运行-d -p 80:<api_port> <image>:<tag> <command to start api>
您可能已经使用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"
我使用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
然后生成我的容器并检查它是否可以访问互联网。
最近几天我也遇到了类似的问题。对我来说,原因是systemd、docker和我的托管提供商的组合。我正在运行最新的CentOS(7.7.1908)。
我的主机提供程序自动为systemd-network生成配置文件。从CentOS 7的当前版本systemd 219开始,systemd-network控制了与网络相关的sysctl参数。Docker似乎与这个版本不兼容,并且每次容器启动时都会重置IP-Forwarding标志。
我的解决方案是在提供者生成的配置文件的[Network]部分中添加IPForward=true。这个文件可能在几个地方,最有可能在/etc/systemd/network中。
这个过程在官方docker文档https://docs.docker.com/v17.09/engine/installation/linux/linux-postinstall/#ip-forwarding-problems中也有描述
唯一能在我的电脑上工作的东西(8.8.8.8不起作用)
找出本地机器中使用的DNS:
$ netstat -ntpl | grep :53
tcp 0 0 10.194.128.1:53 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN -
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN -
tcp 0 0 127.0.2.1:53 0.0.0.0:* LISTEN -
修改docker配置sudo vim /etc/docker/daemon.Json基于上述信息在您自己的计算机上
{
"dns": ["192.168.122.1","10.194.128.1"]
}
重启码头工人
sudo ip link delete docker0
sudo systemctl restart docker