一切正常,但每次运行 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
小智 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
正在运行的内核中的二进制文件现在丢失了。这就是重新启动修复它的原因 - 在重新启动时,您启动到具有这些文件的较新内核。
希望这有助于澄清,因为我自己刚刚遇到了这个问题,需要弄清楚而不是重新启动系统。