安装 Docker 的其他方法
您可以通过几种方式将 Docker 与 开发容器扩展一起使用
- 本地安装的 Docker。
- 安装在另一台机器或远程环境中的 Docker。
- 您只需要在远程主机上安装 Docker,而无需在本地安装 Docker。
- 其他符合 Docker 标准的 CLI,安装在本地或远程环境中。
- 例如,Rancher Desktop 是安装 Docker 的另一种方式,可在 Windows、macOS 和 Linux 上提供容器管理和 Kubernetes。
- 开发容器与 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
之前安装 docker
和 docker-compose
CLI,以使此设置正常工作。
注意:Colima 使用 Alpine Linux,远程 - SSH 不支持该版本。
Linux
如果您在本地计算机上使用 Linux,或者已经拥有具有 SSH 访问权限的远程 Linux 计算机,您可以参考 Docker 文档了解如何在 Linux 上安装 Docker,以及 每个发行版的具体信息。
Cloud-Init VM
您可以将 远程 - SSH 扩展与开发容器一起使用。这使您可以在远程计算机(例如 Linux VM)上安装 Docker。
您可以使用 Cloud-Init 文件(这是一个行业标准)在 VM 上自动安装 Docker。例如,您可以通过 Azure CLI 创建 Azure VM,并将其设置为在创建期间使用 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>
更新为您附近的数据中心(例如,eastus
,westeurope
)
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 主机上进行开发 文档中了解有关将远程 - SSH 与开发容器一起使用的更多信息。
Podman
Podman 1.9+ 与 Docker 的 CLI 命令基本兼容,因此,如果您将Docker 路径设置(通过设置编辑器中的 Dev > Containers: Docker Path)更新为 Linux 上的 podman
,它就可以正常工作。
但是,由于 Podman 中的限制,某些技巧(例如 Docker-from-Docker 不起作用)。这会影响 Dev Containers: Try a Dev Container Sample... 和 Dev Containers: Clone Repository in Container Volume... 命令。
要解决无根 Podman 的问题(例如,不遵守非 root "remoteUser"
并尝试在 root
中安装服务器),您可以设置以下内容
"runArgs": [
"--userns=keep-id"
],
"containerEnv": {
"HOME": "/home/node"
}
当设置 "HOME"
时,可以使用 "remoteUser"
,因为开发容器会优先考虑该设置,而不是在 /etc/passwd
中找到的主文件夹。
Podman 还具有自己的 Compose Spec 实现,即 Podman Compose。
其他容器引擎
您可以通过 vscode-remote-release 存储库 打开或查看对其他容器引擎的支持请求。您已经可以探索几个功能请求