离线安装Docker后启动失败问题

安装https://www.cnblogs.com/sowler/p/18228732这个步骤安装,启动失败

sudo systemctl start docker

查看状态

leoliu@bogon:~$ sudo systemctl status docker × docker.service - Docker Application Container Engine Loaded: loaded (/etc/systemd/system/docker.service; disabled; preset: enabled) Active: failed (Result: exit-code) since Wed 2025-03-05 11:32:59 CST; 2min 51s ago Docs: https://docs.docker.com Process: 55279 ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock --selinux-enabled=false --default-ulimit n> Main PID: 55279 (code=exited, status=1/FAILURE) CPU: 327ms Mar 05 11:32:59 bogon systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE Mar 05 11:32:59 bogon systemd[1]: docker.service: Failed with result 'exit-code'. Mar 05 11:32:59 bogon systemd[1]: Failed to start docker.service - Docker Application Container Engine. Mar 05 11:32:59 bogon systemd[1]: docker.service: Scheduled restart job, restart counter is at 3. Mar 05 11:32:59 bogon systemd[1]: Stopped docker.service - Docker Application Container Engine. Mar 05 11:32:59 bogon systemd[1]: docker.service: Start request repeated too quickly. Mar 05 11:32:59 bogon systemd[1]: docker.service: Failed with result 'exit-code'. Mar 05 11:32:59 bogon systemd[1]: Failed to start docker.service - Docker Application Container Engine.

然后通过 sudo journalctl -u docker.service查看详细日志, 我安装步骤3操作了一遍问题就解决了 !!!!!!!!!!!

Mar 03 17:31:31 bogon dockerd[51559]: time="2025-03-03T17:31:31.511018337+08:00" level=info msg="stopping healthcheck following graceful shutdown" module=libcontainerd Mar 03 17:31:31 bogon dockerd[51559]: time="2025-03-03T17:31:31.511046392+08:00" level=info msg="stopping event stream following graceful shutdown" error="context canceled" module=libcontainerd namespace=> Mar 03 17:31:32 bogon dockerd[51559]: failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to register "bridge" driver: failed to create NAT chain DOC> Mar 03 17:31:32 bogon systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE Mar 03 17:31:32 bogon systemd[1]: docker.service: Failed with result 'exit-code'. Mar 03 17:31:32 bogon systemd[1]: Failed to start docker.service - Docker Application Container Engine. Mar 03 17:31:32 bogon systemd[1]: docker.service: Scheduled restart job, restart counter is at 1. Mar 03 17:31:32 bogon systemd[1]: Stopped docker.service - Docker Application Container Engine. Mar 03 17:31:32 bogon systemd[1]: Starting docker.service - Docker Application Container Engine...

通过豆包咨询了** failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to register "bridge" driver: failed to create NAT chain DOC>**

豆包给出的建议

当你在启动 Docker 守护进程时遇到 failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to register "bridge" driver: failed to create NAT chain 错误,这通常是由于 Docker 网络配置方面的问题,尤其是与 iptables 相关的 NAT 链创建失败导致的。以下是一些可能的解决办法: 1. 检查 iptables 状态 iptables 是 Linux 系统中用于管理网络规则的工具,Docker 在启动时会依赖它来创建必要的网络规则和 NAT 链。 查看 iptables 规则 bash sudo iptables -L -n -v 此命令会列出当前的 iptables 规则,确保没有异常的规则阻止 Docker 创建 NAT 链。 重启 iptables 服务 某些情况下,重启 iptables 服务可以解决一些临时的配置问题。不过,不同 Linux 发行版中 iptables 服务的管理方式可能不同: CentOS/RHEL 系统: bash sudo systemctl restart iptables Debian/Ubuntu 系统:如果使用的是 iptables-persistent 来管理规则,可以尝试重启它: bash sudo systemctl restart netfilter-persistent 2. 清除 iptables 规则 如果 iptables 规则存在冲突或损坏,清除所有规则并重新加载可能会解决问题。 备份现有规则 在清除规则之前,建议先备份现有的 iptables 规则: bash sudo iptables-save > iptables.backup 清除规则 bash sudo iptables -F sudo iptables -X sudo iptables -t nat -F sudo iptables -t nat -X sudo iptables -t mangle -F sudo iptables -t mangle -X sudo iptables -P INPUT ACCEPT sudo iptables -P FORWARD ACCEPT sudo iptables -P OUTPUT ACCEPT 重启 Docker 服务 bash sudo systemctl restart docker 3. 检查内核模块 Docker 的网络功能依赖于一些内核模块,确保这些模块已正确加载。 检查 br_netfilter 模块 bash lsmod | grep br_netfilter 如果没有输出,说明该模块未加载,可以使用以下命令加载: bash sudo modprobe br_netfilter 为了让系统在启动时自动加载该模块,可以创建一个配置文件: bash echo "br_netfilter" | sudo tee /etc/modules-load.d/br_netfilter.conf 检查 ip_tables 和 iptable_nat 模块 同样使用 lsmod 命令检查这两个模块是否已加载: bash lsmod | grep ip_tables lsmod | grep iptable_nat 如果未加载,可以使用 modprobe 命令加载: bash sudo modprobe ip_tables sudo modprobe iptable_nat 4. 检查 SELinux 或 AppArmor 状态 SELinux(Security-Enhanced Linux)和 AppArmor 是 Linux 系统中的安全机制,它们可能会限制 Docker 的网络操作。 临时禁用 SELinux bash sudo setenforce 0 这只是临时禁用 SELinux,重启系统后会恢复到原来的状态。如果禁用 SELinux 后 Docker 可以正常启动,说明 SELinux 可能是问题所在,你可以考虑调整 SELinux 的策略。 临时禁用 AppArmor bash sudo systemctl stop apparmor sudo systemctl disable apparmor 同样,这只是临时禁用 AppArmor,重启系统后需要重新执行上述命令来禁用它。 5. 重新安装 Docker 如果以上方法都无法解决问题,可以尝试卸载并重新安装 Docker。 卸载 Docker bash sudo apt-get purge docker-ce docker-ce-cli containerd.io # 对于 Debian/Ubuntu 系统 sudo yum remove docker-ce docker-ce-cli containerd.io # 对于 CentOS/RHEL 系统 重新安装 Docker 按照 Docker 官方文档的指引,重新安装 Docker。 通过以上步骤,你应该能够解决 Docker 启动时创建 NAT 链失败的问题。如果问题仍然存在,建议查看系统日志以获取更多详细信息。

__EOF__

本文作者拜雨
本文链接https://www.cnblogs.com/baiyuas/p/18752326.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   拜雨  阅读(80)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示