WSL2上Ubuntu22.04安装Docker
前言
熟悉windows环境的朋友们,很希望能熟悉linux环境的docker容器管理操作。而WSL就提供了一个方便的桥梁,但这个中介使用还有些不方便。下面记录下wsl2环境安装docker的过程和遇到的问题。希望能帮助到你。
我的环境配置是:windows10, wsl安装的是ubuntu22.04。
如何搭建wsl并升级到wsl2, 请自行到网络上搜索,这里不介绍了。
安装准备
- 设置apt 国内源
可以按照这里执行。补充一点,建议国内源不要覆盖原来的源配置,将国内源添加到/etc/apt/sources.list末尾即可。有极个别的组件国内源是没有的。 - 更新包列表
sudo apt-get update sudo apt-get upgrade # 不建议执行。你只是更新本地包列表,不是系统升级。有时候升级不一定合适。
安装必要的依赖
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
添加Docker的官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
设置Docker的稳定版存储库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
设置Docker国内源
请参照这里。国内源的优势在于速度。
更新包列表
sudo apt update
安装Docker Engine
sudo apt install -y docker-ce docker-ce-cli containerd.io
验证Docker安装
验证Docker是否安装成功并正在运行:
sudo docker run hello-world
执行错误提示:systemd not running on this host, cannot use systemd cgroups manager
WSL不支持systemd的启动方式,也没有systemctl指令。这是wsl和原生linux的区别。
解决方案,请参考这里
将当前用户添加到docker组(可选)
为了在不使用sudo的情况下运行Docker命令,可以将当前用户添加到docker组。
sudo usermod -aG docker $USER # 将当前用户添加到docker组
wsl --terminate Ubuntu # 重新启动WSL2实例以使更改生效
docker run hello-world # 重新启动WSL2后,再次登录并验证:
启用Docker自动启动(可选)
wsl关闭,docker服务自动停止,启动wsl时需要启动docker服务。如果想每次进入wsl时自动启动docker服务,可以这么做:
vim /root/.bashrc
... # 末尾添加一行代码: service docker start
source ~/.bashrc # 使修改立即生效
docker build构建自己的helloworld
相信大家熟悉了现有的hello-world镜像后,想自己构建一个自己的helloworld。请参照这里。
本机效果:
(base) root@DESKTOP-O1L58GK:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my-hello-world latest c81964ac3ce4 4 days ago 923MB
hello-world latest d2c94e258dcb 20 months ago 13.3kB
至此wsl2搭建docker环境完毕。