wsl2安装docker问题汇总及设置随系统自启动

我的wsl2中安装的ubuntu版本为22.04,安装docker的方式直接参考docker的官方文档即可,参考链接:Ubuntu | Docker Docs

docker服务安装步骤:

1. 配置apt源

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

2. 安装docker软件包

 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

3. 查看docker是否安装成功(如果没有报错即成功)

sudo docker ps

安装过程可能遇到的问题:

问题1: 执行命令sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc时报openssl连接错误:

curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection to download.docker.com:443

解决办法:反复多试几遍就行了,就是网络不稳定而已。反正这一步很快执行完的。

问题2:执行命令sudo apt-get update时出错:https://download.docker.com/linux/ubuntu jammy InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8

解决办法:加上--allow-insecure-repositories参数试试,也即将命令修改为:

sudo apt-get update --allow-insecure-repositories

参考:Ubuntu 22.04 jammy 的镜像使用apt update失败_jammy镜像源-优快云博客

备注:网上的其他办法对于我似乎无效,例如:Ubuntu;解决更新apt软件源时报GPG错误:_ubuntu+更新gpg-优快云博客

问题3:执行docker相关命令时出错:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

解析:这个说明docker没有正常启动,这个原因主要是wsl2造成的,所以直接使用命令sudo service docker start是无法成功启动docker服务的,这里需要更新iptables的相关配置(具体为什么这样做我不太懂,只知道确实有效),具体可参考这里:解决WSL2的ubuntu20.04中安装docker出现无法连接的问题(Cannot connect to the Docker daemon)_wsl2安装ubuntu的docker不行-优快云博客

解决办法:配置iptables,具体步骤如下:

配置iptables,执行以下命令:

sudo update-alternatives --config iptables

在弹出的选择菜单中输入1即可(即iptables-legacy manual mode项)

如下图所示,docker已经成功启动:

设置docker随ubuntu自动启动:

上述设置完成后,但如果系统重启,docker并不会默认随系统启动,需要手动输入如下命令才行:

sudo service docker start

设置docker自启动,大致有如下两个方法:

方法1:使用windows系统自启动程序在开机时自动执行脚本

1.1 先在wsl中的ubuntu创建用于启动docker的脚本 init.wsl

sudo nano /etc/init.wsl

1.2 修改init.wsl的内容如下:

#! /bin/sh
service docker start

1.3 赋予脚本可执行权限:

sudo chmod +x /etc/init.wsl

1.4 在windows系统下新建start-docker.vbs文件,并输入以下内容保存:

Set ws = WScript.CreateObject("WScript.Shell")        
ws.run "wsl -d ubuntu -u root /etc/init.wsl"

注意:上面wsl -d后的ubuntu名字是分布版本的名字,具体名字可能会有所不同,可通过命令wsl -l -v中的name列来确定

1.5 打开windows的自启动程序目录(按 win+R 输入 shell:startup),将上述vbs文件放入其中,如下图所示:

1.6 重启计算机后,直接进入到wsl下的ubuntu执行sudo docker ps,成功!如下图所示:

参考:WSL2.0 安装、自定义目录、docker、开机+docker自启、报错教程 - AJun816 - 博客园

方法2:通过修改WSL 2的启动配置,使得WSL启动时自动启动Docker服务

2.1 修改~/.bashrc:

sudo nano ~/.bashrc

2.2 在文件末尾加入以下内容并保存:

# Automatically start Docker when WSL 2 starts
if [ -z "$(pidof dockerd)" ]; then
    sudo service docker start
fi

2.3 重启计算机,进入到ubuntu:

参考:WSL启动时自动启动docker服务_wsl开机自启-优快云博客

备注:该方法主要缺点是第一次进入到ubuntu时,会提示密码输入后,才能成功启动docker服务,如上图所示。

方法3:使用systemd的方式,可参考我的另一篇文章

wsl中ubuntu开启systemd,实现docker服务自启动-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值