现已发布!阅读 10 月份的新功能和修复。

安装 Docker 的其他方法

您可以通过几种方式在 开发容器 扩展中使用 Docker。

  • 本地安装的 Docker。
  • 安装在另一台机器或远程环境上的 Docker。
    • 您只需要在远程主机上安装 Docker,而不需要在本地安装 Docker。
  • 其他符合 Docker 规范的 CLI,安装在本地或远程环境中。
    • 例如,Rancher Desktop 是一种安装 Docker 的方法,它在 Windows、macOS 和 Linux 上提供容器管理和 Kubernetes。
      • 由于 Rancher Desktop 通过 Moby 支持 Docker CLI,因此您可以使用开发容器扩展。您可以在 Rancher Desktop 的 指南 中了解如何开始使用。
    • 开发容器与 CLI 交互;它不会对容器引擎的工作方式进行任何假设,也不会直接与容器引擎或守护程序交互。
    • 请注意,其他符合 Docker 规范的 CLI 未正式支持。

继续阅读以了解您可以安装和使用 Docker 或符合 Docker 规范的 CLI 的其他方法。

Windows:Windows Subsystem for Linux (WSL)

在 Windows 上,您可以通过 WSL 扩展使用安装在 WSL 中的 Docker。您可以参考 Docker 文档 来了解如何在 Linux 上安装 Docker,以及 每个发行版的特定信息

一个问题是 dockerd 守护程序由于缺少 systemd 或任何其他系统守护程序而不会自动启动。在 WSL 版本 0.67.6 及更高版本 (wsl --version) 中,您可以启用 systemd 的支持。对于旧版本的 WSL,您可以使用 Distrod 创建或更新现有的 WSL 发行版,以包含 systemd

macOS:Colima

Colima 在 macOS 上提供容器运行时。建议使用 Colima v0.2.2 或更高版本,以便 VS Code 可以正确地看到通过 Colima 运行的容器。

Colima 自动设置 colima Docker 上下文 并使其成为活动上下文。您可能还想在运行 colima start 之前安装 dockerdocker-compose CLI,以便此设置正常工作。

注意:Colima 使用 Alpine Linux,该发行版不受 Remote - SSH 支持。

Linux

如果您在本地机器上使用 Linux,或者已经有一台拥有 SSH 访问权限的远程 Linux 机器,您可以参考 Docker 文档 来了解如何在 Linux 上安装 Docker,以及 每个发行版的特定信息

Cloud-Init 虚拟机

您可以将 Remote - SSH 扩展与开发容器一起使用。这使您能够在远程机器上安装 Docker,例如 Linux 虚拟机。

您可以使用 Cloud-Init 文件(它是行业标准)来自动在虚拟机上安装 Docker。例如,您可以通过 Azure CLI 创建 Azure 虚拟机,并将其设置为在创建期间使用 cloud-init.txt

cloud-init.txt 文件

#cloud-config

apt:
  sources:
    docker.list:
      source: deb [arch=amd64] https://download.docker.com/linux/ubuntu $RELEASE stable
      keyid: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88

packages:
  - docker-ce
  - docker-ce-cli

groups:
  - docker

system_info:
  default_user:
    groups: [docker]

以下是如何使用 Azure CLI 的示例。请务必将 <location-here> 更新为靠近您的数据中心(例如,eastuswesteurope)。

az login

az group create --name dev-server --location <location-here>

az vm create \
  --resource-group dev-server \
  --name dev-server \
  --image Canonical:0001-com-ubuntu-server-impish:21_10-gen2:latest \
  --custom-data cloud-init.txt \
  --generate-ssh-keys

您可以在 在远程 Docker 主机上开发 文档中了解有关将 Remote - SSH 与开发容器一起使用的更多信息。

Podman

Podman 1.9+ 大致兼容 Docker 的 CLI 命令,因此如果您在 Linux 上将 **Docker 路径** 设置(通过设置编辑器中的 **开发 > 容器:Docker 路径**)更新为 podman,它就可以工作。

Docker Path setting

但是,由于 Podman 的限制,某些技巧(例如 Docker-from-Docker 无法工作)。这会影响 **开发容器:尝试开发容器示例...** 和 开发容器:在容器卷中克隆存储库... 命令。

为了解决无根 Podman 的问题(例如,不尊重非 root "remoteUser" 并尝试在 root 中安装服务器),您可以设置以下内容

"runArgs": [
  "--userns=keep-id"
],
"containerEnv": {
  "HOME": "/home/node"
}

"HOME" 设置时,可以使用 "remoteUser",因为开发容器会优先考虑该设置,而不是它在 /etc/passwd 中找到的主目录。

Podman 还使用 Podman Compose 实现了 Compose 规范。

其他容器引擎

您可以在 vscode-remote-release 存储库 中打开或查看对其他容器引擎的支持请求。您还可以探索其他一些功能请求。