在WSL2的Ubuntu中安装和使用Docker/Podman

在Windows Subsystem for Linux 2(WSL2)中运行Ubuntu,并在其中使用Docker和Podman,可以大大提升开发和部署效率。以下是详细的安装和使用指南。

安装WSL2和Ubuntu

  1. 启用WSL和WSL2:
    打开PowerShell,运行以下命令:

    wsl --install
    wsl --set-default-version 2
  2. 安装Ubuntu:
    从Microsoft Store下载并安装Ubuntu发行版。

在WSL2中安装Docker

1. 安装Docker

在WSL2的Ubuntu中,安装Docker需要配置Docker的官方存储库,并安装Docker引擎。以下是具体步骤:

  1. 更新包列表并安装依赖项:

    sudo apt-get update
    sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
  2. 添加Docker的官方GPG密钥:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  3. 添加Docker的APT存储库:

    echo "deb [arch=amd64 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
  4. 安装Docker引擎:

    sudo apt-get update
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io
  5. 启动Docker服务:

    sudo service docker start
  6. 验证Docker安装:

    sudo docker run hello-world

2. 配置Docker与WSL2集成

  1. 安装Docker Desktop for Windows:
    下载并安装Docker Desktop。安装完成后,打开Docker Desktop并确保已启用WSL2集成。
  2. 配置Docker访问权限:
    将当前用户添加到 docker组,以避免每次运行Docker命令都需要 sudo:

    sudo usermod -aG docker $USER

    然后退出并重新登录Shell会话。

在WSL2中安装Podman

Podman是一个无守护进程的容器引擎,兼容Docker命令行工具。以下是在WSL2中安装和使用Podman的步骤:

1. 安装Podman

  1. 更新包列表并安装依赖项:

    sudo apt-get update
    sudo apt-get install -y software-properties-common
  2. 添加Podman的官方存储库:

    . /etc/os-release
    echo "deb http://deb.debian.org/debian ${VERSION_CODENAME}-backports main" | sudo tee /etc/apt/sources.list.d/backports.list
    sudo apt-get update
  3. 安装Podman:

    sudo apt-get -t ${VERSION_CODENAME}-backports install -y podman
  4. 验证Podman安装:

    podman --version

2. 使用Podman

Podman的命令与Docker几乎完全兼容,因此可以使用熟悉的Docker命令来管理容器。例如:

podman run hello-world

Docker与Podman的比较

特性 Docker Podman
守护进程 需要docker守护进程 无守护进程
安装复杂度 安装步骤较多,依赖Docker Desktop 安装步骤较少,直接使用APT安装
兼容性 广泛使用,生态系统丰富 兼容Docker CLI命令,多样化使用场景
性能 依赖守护进程,可能有性能开销 无守护进程,资源利用更高效
安全性 使用root权限启动容器 无需root权限启动,安全性更高

常见问题及解决方法

Docker服务无法启动:

  • 确保已启动Docker Desktop,并在WSL2集成设置中启用了对应的Ubuntu发行版。
  • 检查Docker Desktop的资源配置,确保分配了足够的CPU和内存资源。

Podman命令找不到镜像:

  • 确保配置了正确的镜像源,可以通过 podman search命令来搜索镜像。

权限问题:

  • 确保将用户添加到 docker组后,重新启动Shell会话以应用权限更改。

结论

在WSL2的Ubuntu环境中安装和使用Docker与Podman,可以利用两者各自的优势来管理容器化应用。Docker以其丰富的生态系统和广泛的应用而著称,而Podman则以其无守护进程和更高的安全性吸引了大量用户。通过本文的详细步骤,读者可以轻松在WSL2中配置和使用这两种容器工具,提高开发和部署效率。