wsl中迁移ubuntu24.04后docker后无法启动的问题

wsl中迁移ubuntu24.04后docker后无法启动的问题

发生原因

我将外网wsl2中的Ubuntu24.04迁移到内网(无网络)电脑中,发现原本安装的docker无法启动,

在使用 apt-get install docker-ce docker-ce-cli containerd.io重新安装后依然不行

NOTE:迁移后软件会失去注册信息,运行会提示命令未注册,所以需要重新安装。其实系统中已经包含了相关安装包,所以不会联网下载

原因

查看Docker的日志vim /var/log/docker.log显示如下的错误

shell 复制代码
time="2025-04-09T10:29:59.904691194+08:00" level=info msg="Loading containers: start."
time="2025-04-09T10:30:00.055889722+08:00" level=info msg="stopping event stream following graceful shutdown" error="<nil>" module=libcontainerd namespace=moby
time="2025-04-09T10:30:00.056182637+08:00" level=info msg="stopping healthcheck following graceful shutdown" module=libcontainerd
time="2025-04-09T10:30:00.056254606+08:00" level=info msg="stopping event stream following graceful shutdown" error="context canceled" module=libcontainerd namespace=plugins.moby
failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to register "bridge" driver: failed to add jump rules to ipv4 NAT table: failed to append jump rules to nat-PREROUTING:  (iptables failed: iptables --wait -t nat -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER: Warning: Extension addrtype revision 0 not supported, missing kernel module?
iptables v1.8.10 (nf_tables):  CHAIN_ADD failed (No such file or directory): chain PREROUTING
 (exit status 4))

原因是由于迁移后ubuntu系统使用了iptables-nft,而WSL2不支持导致的。

修复

修改为iptables-legacy即可

shell 复制代码
 root@DESKTOP-5DTRJV0:/home/friday/apt-offline# update-alternatives --config iptables
There are 2 choices for the alternative iptables (providing /usr/sbin/iptables).

  Selection    Path                       Priority   Status
------------------------------------------------------------
* 0            /usr/sbin/iptables-nft      20        auto mode
  1            /usr/sbin/iptables-legacy   10        manual mode
  2            /usr/sbin/iptables-nft      20        manual mode

Press <enter> to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/sbin/iptables-legacy to provide /usr/sbin/iptables (iptables) in manual mode
root@DESKTOP-5DTRJV0:/home/friday/apt-offline# service docker start
 * Starting Docker: docker                                               [ OK ]                                                                                                                                              
root@DESKTOP-5DTRJV0:/home/friday/apt-offline# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
相关推荐
❀͜͡傀儡师24 分钟前
docker一键部署HFish蜜罐
运维·docker·容器
DO_Community36 分钟前
DigitalOcean容器注册表推出多注册表支持功能
服务器·数据库·docker·kubernetes
dnpao1 小时前
linux onlyoffice服务向docker容器中添加中文字体
linux·运维·docker
java_logo2 小时前
Dify 开源 LLM 应用开发平台企业级 Docker Compose 部署手册
docker·容器·开源·dify部署·dify部署文档·dify部署方案·dify部署教程
jarreyer3 小时前
【docker的gpu加速相关问题解决记录】
运维·docker·容器
韭菜钟3 小时前
制作自定义Docker镜像并部署使用
运维·docker·容器
椰汁菠萝3 小时前
docker部署gitlab
docker·容器·gitlab
知识分享小能手3 小时前
Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04 中安装 Docker 容器 —— 知识点详解(26)
学习·ubuntu·docker
Knight_AL4 小时前
使用 Docker 快速安装 GitLab(CentOS)
docker·centos·gitlab
牛奔5 小时前
Docker Compose 解决服务间 DNS 解析失败问题
运维·docker·容器