我让它正常工作,但现在它停了。我尝试了以下命令,但没有效果:

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也被禁用了


当前回答

对我来说,我在使用podman时遇到了与redhat/centos/fedora用户相同的问题

firewall-cmd --zone=public --add-masquerade
firewall-cmd --permanent --zone=public --add-masquerade

对于更多的防火墙和podman(或docker) -容器中没有互联网,无法解析主机

其他回答

用OSX的答案更新这个问题(使用Docker Machine)

如果你使用Docker Machine在OSX上运行Docker,那么下面的方法对我来说是有效的:

docker-machine restart

<...wait for it to restart, which takes up to a minute...>

docker-machine env
eval $(docker-machine env)

然后(至少在我的经验中),如果你从容器中ping google.com,一切都会很好。

当我的一个容器随机发生这种情况,而其他容器都很好时,我被难住了。容器至少连接到一个非内部网络,因此Compose定义没有任何问题。重启VM / docker守护进程没有帮助。这也不是DNS问题,因为容器甚至不能ping外部IP。为我解决这个问题的是重新创建docker网络。在我的例子中,docker-compose down && docker-compose up工作。

组成

这迫使我们重新构建所有容器的网络:

Docker-compose down && Docker-compose up

群模式

我认为你只是删除并重新创建服务,这将重新创建服务的网络:

Docker服务rm some-service

Docker服务创建…

如果容器的网络是外部的

只需删除并重新创建该服务的外部网络:

Docker网络rm some-external-network

Docker网络创建一些外部网络

它帮助我:

sudo ip link delete docker0
sudo systemctl stop docker.socket
sudo systemctl stop docker.service

sudo systemctl start docker.socket
sudo systemctl start docker.service

注意:在此之后,接口docker0的ip地址必须是smth,如下所示:

inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0

经过几个小时的努力,我终于解决了问题

问题是linux使用旧版本的libseccomp2

获取签名密钥以验证新包,否则将无法安装

rpi ~$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC 648ACFD622F3D138

将Buster后台端口存储库添加到apt sources.list

rpi ~$ echo 'deb http://httpredir.debian.org/debian buster-backports main contrib non-free' | sudo tee -a /etc/apt/sources.list.d/debian-backports.list

rpi ~$ sudo apt update
rpi ~$ sudo apt install libseccomp2 -t buster-backports

在这次尝试之后

rpi ~$ docker run -it --rm alpine:3.15.0
(alpine shell)# apk update

Apk更新将获取,因此您连接到互联网

我在用

Linux raspberrypi 5.10.63-v7l+ #1496 SMP Wed Dec 1 15:58:56 GMT 2021 armv7l GNU/Linux

您可以使用uname -a进行检查

唯一能在我的电脑上工作的东西(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