我的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服务,如上图所示。
3396

被折叠的 条评论
为什么被折叠?



