searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

在 Wsl2 中安装 Docker,非Docker Desktop方案

2024-09-27 09:20:34
516
0

0. 背景

对于WSL2来说,安装docker最方便的方式当然是直接下载安装Docker Desktop, 不过,对于许多开发者来说,Docker Desktop 的资源占用过高,可能会拖慢系统的运行,且Docker Desktop 的免费版本仅免费提供给个人用户、小型企业和教育机构使用的,存在一定的法律风险。因此,本文将介绍如何在 WSL2 中直接安装和运行 Docker,这是一种非 Docker Desktop 的方案。

1. 准备工作

1.1. 演示环境
系统版本 WSL 版本 Linux 发行版 Clion 版本
Windows 11 Pro 23H2 2 Ubuntu 22.04.3 LTS (Microsoft Store) 2024.2.0.1

本文默认Windows已完成 WSL2 的安装,我们从 Microsoft Store下载的纯净发行版开始,演示配置过程。

2. 安装Docker

  • 执行安装命令
sudo apt-get update
sudo apt-get install docker.io
  • 安装完毕后进行测试
sudo docker run hello-world
  • 部分系统可能出现以下错误
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.
  • 尝试启动dockerd
sudo systemctl start docker
#也可以选择设置开机自启
sudo systemctl enable docker
  • 如果发现依然出现以下报错
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
  • 原因是你的系统并没有使用 systemd 作为其初始化系统(PID 1),在没有 systemd 的系统上,systemctl 命令是无法工作的。原先的 Wsl2不支持 systemd,而是采用systemv, 这导致常用的systemctl无法正常使用,参考官方文档发现,最新版本的Ubuntu发行版已经默认使用 systemd 作为初始化系统, 如果是曾经安装的发行版,可以检查一下 WSL 的版本
#使用windows自带的powershell执行以下命令
wsl --version
  • 如果低于0.67.6,请更新系统,并运行以下指令
#使用windows自带的powershell执行以下命令
wsl --update
  • 如果是0.67.6或者以上,就可以直接通过以下方法配置 systemd
  1. 打开子系统中的 /etc/wsl.conf 文件,如果没有则创建一个
  2. 在文件中添加以下配置,保存并退出
[boot]
systemd=true
  1. 执行以下命令,停止WSL
#使用windows自带的powershell执行以下命令
wsl --shutdown
  • 重新进入发行版,就已经可以在正常使用 systemctldocker
0条评论
0 / 1000
InuaNG
4文章数
1粉丝数
InuaNG
4 文章 | 1 粉丝
原创

在 Wsl2 中安装 Docker,非Docker Desktop方案

2024-09-27 09:20:34
516
0

0. 背景

对于WSL2来说,安装docker最方便的方式当然是直接下载安装Docker Desktop, 不过,对于许多开发者来说,Docker Desktop 的资源占用过高,可能会拖慢系统的运行,且Docker Desktop 的免费版本仅免费提供给个人用户、小型企业和教育机构使用的,存在一定的法律风险。因此,本文将介绍如何在 WSL2 中直接安装和运行 Docker,这是一种非 Docker Desktop 的方案。

1. 准备工作

1.1. 演示环境
系统版本 WSL 版本 Linux 发行版 Clion 版本
Windows 11 Pro 23H2 2 Ubuntu 22.04.3 LTS (Microsoft Store) 2024.2.0.1

本文默认Windows已完成 WSL2 的安装,我们从 Microsoft Store下载的纯净发行版开始,演示配置过程。

2. 安装Docker

  • 执行安装命令
sudo apt-get update
sudo apt-get install docker.io
  • 安装完毕后进行测试
sudo docker run hello-world
  • 部分系统可能出现以下错误
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.
  • 尝试启动dockerd
sudo systemctl start docker
#也可以选择设置开机自启
sudo systemctl enable docker
  • 如果发现依然出现以下报错
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
  • 原因是你的系统并没有使用 systemd 作为其初始化系统(PID 1),在没有 systemd 的系统上,systemctl 命令是无法工作的。原先的 Wsl2不支持 systemd,而是采用systemv, 这导致常用的systemctl无法正常使用,参考官方文档发现,最新版本的Ubuntu发行版已经默认使用 systemd 作为初始化系统, 如果是曾经安装的发行版,可以检查一下 WSL 的版本
#使用windows自带的powershell执行以下命令
wsl --version
  • 如果低于0.67.6,请更新系统,并运行以下指令
#使用windows自带的powershell执行以下命令
wsl --update
  • 如果是0.67.6或者以上,就可以直接通过以下方法配置 systemd
  1. 打开子系统中的 /etc/wsl.conf 文件,如果没有则创建一个
  2. 在文件中添加以下配置,保存并退出
[boot]
systemd=true
  1. 执行以下命令,停止WSL
#使用windows自带的powershell执行以下命令
wsl --shutdown
  • 重新进入发行版,就已经可以在正常使用 systemctldocker
文章来自个人专栏
音视频后端技术
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0