docker:来自守护进程的错误响应:无法创建端点 - 添加主机失败

Mac*_*lli 10 linux docker

一切正常,但每次运行 Docker 容器时突然出现错误。

例子:

docker run -it debian
Run Code Online (Sandbox Code Playgroud)

结果错误:

docker: 来自守护进程的错误响应:无法在网桥上创建端点 dazzling_ptolemy:无法添加主机 (veth1e8eb9b) <=> 沙箱 (veth73c911f) 对接口:不支持操作

我已经使用重新启动了 Docker

systemctl restart docker
Run Code Online (Sandbox Code Playgroud)

我也做了网络修剪

docker network prune
Run Code Online (Sandbox Code Playgroud)

似乎没有任何效果。我该怎么办?

小智 9

我还没有花时间去弄清楚原因,但你应该只需要重新启动你的机器;它对我有用。

在 github 上搜索错误后发现了这个,它链接到了不久前的这个 github 问题:https : //github.com/moby/moby/issues/15341#issuecomment-218930712

  • 这样的事情让我想把电脑抛在脑后,研究木刻 (8认同)
  • 对我来说,这是由更新我的内核引起的。我使用了一个滚动发布的操作系统,其中内核更新发生得有点频繁。当我更新我的系统时,总是有机会更新内核,并且需要重新启动才能使 docker 网络再次工作。我希望这可以帮助那些可能想知道是什么原因造成的。我很想找到一种方法来避免重新启动。 (4认同)
  • 根据我的经验,发生这种情况是因为我更新了系统,但忘记重新启动以加载新内核并重新初始化网络系统。我认为它正在尝试为新的非运行内核加载一些东西。只是一个想法。 (2认同)

小智 6

提供比其他人更具体的答案。

重新启动工作是因为此问题的根源是缺少活动内核的内核模块文件。

假设您正在运行 kernel linux-image-4.19.0-13-amd64。这个包安装了各种二进制内核模块文件/lib/modules/4.19.0-13-amd64。当您加载 Docker 容器时,它会动态加载其中的几个模块,特别是如果这是您自上次启动以来启动的第一个容器。

现在假设您将内核升级到linux-image-4.19.0-14-amd64. 此时,等待重新启动,您仍在运行linux-image-4.19.0-13-amd64,如果您启动 Docker 容器,它将加载4.19.0-13模块。这应该可以正常工作。

这个问题来,如果你再删除linux-image-4.19.0-13-amd64重新启动前,包(和忽略有关“删除运行的内核”,因为我倾向于做可怕的警告)。如果您随后尝试加载这些模块,它将失败,因为/lib/modules正在运行的内核中的二进制文件现在丢失了。这就是重新启动修复它的原因 - 在重新启动时,您启动到具有这些文件的较新内核。

希望这有助于澄清,因为我自己刚刚遇到了这个问题,需要弄清楚而不是重新启动系统。