安装Docker的其他方法

你可以通过几种方式使用Docker与Dev Containers扩展:

  • 本地已安装Docker。
  • 在另一台机器或远程环境中安装了Docker。
    • 您只需要在远程主机上安装Docker,而不是在本地安装Docker。
  • 其他符合Docker标准的CLI,安装在本地或远程环境中。
    • 例如,Rancher Desktop 是另一种安装Docker的方式,提供在Windows、macOS和Linux上的容器管理和Kubernetes。
      • 由于Rancher Desktop通过Moby支持Docker CLI,你可以使用Dev Containers扩展。你可以在Rancher Desktop的指南中学习如何开始。
    • Dev Containers与CLI交互;它不对容器引擎的工作方式做出假设,也不直接与容器引擎或守护进程交互。
    • 请注意,其他符合Docker标准的CLI不受官方支持。

继续阅读以了解您可以安装和使用Docker或兼容Docker的CLI的其他方法。

Windows: Linux 的 Windows 子系统 (WSL)

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

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

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命令的示例。请确保将更新为靠近您的数据中心(例如,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与Dev Containers的信息。

Podman

Podman 1.9+ 与 Docker 的 CLI 命令大部分兼容,因此如果您在 Linux 上将 Docker Path 设置(通过设置编辑器中的 Dev > Containers: Docker Path)更新为 podman,它将正常工作。

Docker路径设置

然而,由于Podman的限制,某些技巧如Docker-from-Docker无法工作。这影响了开发容器:尝试一个开发容器示例...开发容器:在容器卷中克隆仓库...命令。

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

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

"remoteUser" 可以在 "HOME" 设置时使用,因为 Dev Containers 会优先使用该设置,而不是在 /etc/passwd 中找到的主文件夹。

Podman 也有自己的 Compose Spec 实现,即 Podman Compose

其他容器引擎

您可以通过vscode-remote-release 仓库打开或查看对其他容器引擎的支持请求。已经有几个功能请求您可以探索: