如何在Linux虚拟机无头模式下为Docker Engine添加WASM支持
在Linux Docker Engine上配置WasmEdge WASM支持(无需Docker Desktop)
我之前在Linux虚拟机的Docker Engine环境下成功配置过这项功能,分享下完整步骤和踩过的坑:
前置条件
- Docker Engine版本需在20.10.14及以上(containerd相关特性依赖此版本)
- 已正确安装Docker Engine(非Docker Desktop)
配置步骤
1. 安装WasmEdge运行时
执行官方一键安装脚本:
curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install.sh | bash
安装完成后加载环境变量:
source $HOME/.bashrc
验证安装:
wasmedge --version
能正常输出版本信息即为成功。
2. 安装containerd-wasmedge-slim插件
先创建插件存放目录:
sudo mkdir -p /etc/containerd
根据你的Linux架构下载对应插件(以x86_64为例):
sudo wget -O /etc/containerd/containerd-wasmedge-slim https://github.com/second-state/containerd-wasmedge-slim/releases/latest/download/containerd-wasmedge-slim-x86_64
给插件添加执行权限:
sudo chmod +x /etc/containerd/containerd-wasmedge-slim
3. 配置containerd启用WasmEdge runtime
生成containerd默认配置文件:
containerd config default | sudo tee /etc/containerd/config.toml
编辑该配置文件,找到[plugins."io.containerd.grpc.v1.cri".containerd.runtimes]段落,添加以下配置:
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.wasmedge] runtime_type = "io.containerd.wasmedge.v1" [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.wasmedge.options] BinaryName = "/etc/containerd/containerd-wasmedge-slim"
4. 配置Docker daemon识别WasmEdge runtime
创建或编辑/etc/docker/daemon.json文件,添加:
{ "runtimes": { "wasmedge": { "path": "/etc/containerd/containerd-wasmedge-slim" } } }
5. 重启服务使配置生效
sudo systemctl restart containerd sudo systemctl restart docker
6. 测试验证
拉取WASM示例镜像:
docker pull second-state/wasm-wasi-example:latest
用WasmEdge runtime运行容器:
docker run --rm --runtime=wasmedge second-state/wasm-wasi-example:latest
若输出Hello WasmEdge!及相关测试信息,说明配置完全成功。
常见踩坑点
- 架构不匹配:下载插件时要对应自己的Linux架构(用
uname -m查看),否则插件无法执行。 - 配置文件格式错误:containerd的toml配置和Docker的json配置要严格遵循语法,比如引号、逗号不能错。
- 权限问题:确保
containerd-wasmedge-slim有执行权限,否则containerd无法调用。 - 服务未重启:修改配置后必须重启containerd和Docker,否则配置不生效。
内容的提问来源于stack exchange,提问作者chen lin
相关产品推荐
相关产品推荐

