WSL2-Debian 安裝 docker 后無(wú)法啟動(dòng)的解決辦法

image-20220314143716315

昨天在一臺(tái)新的 Windows 11 中安裝了 WLS2,目的就是使用 docker。

Microsoft Store 中默認(rèn)的 Debian 版本是 11,我在很久之前安裝的是 10,照著之前的經(jīng)驗(yàn)添加了北外鏡像的 docker-ce 源,安裝很順利。

使用過(guò) WSL2 的人肯定知道,WSL2 中不能使用systemctl,需要使用service來(lái)啟動(dòng) docker 或其他服務(wù)。

于是我便啟動(dòng) docker:

sudo service docker start

此時(shí)竟無(wú)法啟動(dòng),查看日志:

$ cat /var/log/docker.log
...
Sep 13 20:47:37 xxx dockerd: failed to start daemon: Error initializing network controller: error
 obtaining controller instance: failed to create NAT chain DOCKER: iptables failed: iptables -t nat -N D
OCKER: iptables v1.4.21: can't initialize iptables table `nat': Table does not exist (do you need to ins
mod?)

可以看到是 iptables 的問(wèn)題,此問(wèn)題在其 github 倉(cāng)庫(kù)中有人提出過(guò)#1105,幸運(yùn)的是,這個(gè)問(wèn)題正好能被簡(jiǎn)單地解決。

首先,將iptablesiptables-legacy替換:

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

然后,開(kāi)啟 ipv4 的包轉(zhuǎn)發(fā)功能:

sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf

最后,重啟 WSL2,下面的代碼在管理員模式下的 powershell 中運(yùn)行:

wsl --shutdown

此時(shí)再啟動(dòng) Debian,就能順利啟動(dòng) docker了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容