Docker启动失败,因为找不到/etc/fstab文件。

14

我正在使用Windows Linux子系统(Debian stretch)。按照Docker网站上的说明安装了docker-ce,但它无法启动。以下是详细信息:

$ sudo service docker start
grep: /etc/fstab: No such file or directory
[ ok ] Starting Docker: docker.
$ sudo service docker status
[FAIL] Docker is not running ... failed!

如果出现“/etc/fstab未找到”的情况,应该怎么办?


6
您可能想要使用Docker for Windows。WSL 很可能永远不会支持运行 Docker 守护程序。 - Matt
@Matt 太好了,谢谢。 - qwang07
4个回答

14

修复fstab文件

touch /etc/fstab

如果你运行dockerd,它会给出失败的信息:

INFO[2022-01-27T17:55:14.100489400+07:00] Loading containers: start.
WARN[2022-01-27T17:55:14.191666800+07:00] Running iptables --wait -t nat -L -n failed with message: `iptables v1.8.2 (nf_tables):  CHAIN_ADD failed (No such file or directory): chain PREROUTING`, error: exit status 4
INFO[2022-01-27T17:55:14.493716300+07:00] stopping event stream following graceful shutdown  error="<nil>" module=libcontainerd namespace=moby
INFO[2022-01-27T17:55:14.494906600+07:00] stopping event stream following graceful shutdown  error="context canceled" module=libcontainerd namespace=plugins.moby
INFO[2022-01-27T17:55:14.495048400+07:00] stopping healthcheck following graceful shutdown  module=libcontainerd
failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: iptables failed: iptables --wait -t nat -N DOCKER: iptables v1.8.2 (nf_tables):  CHAIN_ADD failed (No such file or directory): chain PREROUTING
 (exit status 4)

这是Debian的网络地址转换问题,可以通过以下方法解决:

sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

现在您可以重新启动服务。

您可以按照此步骤使其在启动时自动启动https://askubuntu.com/a/1356147/138352

编辑:

如果IP表的问题仍然存在,请尝试将WSL版本设置为2,从Windows shell运行以下命令:

wsl --set-version <distribution name> 2

使用命令 wsl -l 可以找到分发列表。


它可以工作。WSL2没问题。 - dogdog
1
您可以编辑您的帖子并添加wsl命令来自Windows Shell。在我的情况下,第一个update-alternatives已经完成了,不需要第二个。 - Timo
1
在WSL2上使用Debian 11工作 - Roma

12

我遇到了同样的错误。显然,在我的WSL上安装Debian时,我没有etc/fstab文件。令人惊讶的是,只需通过“touch”命令创建该文件即可:

sudo touch /etc/fstab

2
在我的 Wsl2 上使用 Debian 10 无法工作,但是这篇文章帮了我。 - Timo

2
也许是一个好的信号:Build 17093

WSL现在在实例启动时处理/etc/fstab文件[GH 2636]。


信号好,但到2022年3月仍无法正常工作。 - Ralf

-1

Docker 在 WSL 2 中运行良好;链接只是说您不能同时执行两个操作(在 WSL 中运行 Linux Docker 和运行 Windows Docker)。 - Mikeb
也许我说的是WSL而不是WSL 2,因为我指的是WSL而不是WSL 2。 - Alex D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接