Docker使用crun步骤

crun是OCI 兼容的容器运行时,可以替代Docker默认的runc。


1. 安装crun

1
2
3
4
5
6
7
8
# Fedora / RHEL / CentOS Stream
sudo dnf install crun

# Ubuntu / Debian
sudo apt update && sudo apt install crun

# 验证安装
crun --version

2. 配置Docker使用crun

编辑(或创建)Docker 配置文件 /etc/docker/daemon.json:

1
2
sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json

添加以下内容

1
2
3
4
5
6
7
{
"runtimes": {
"crun": {
"path": "/usr/bin/crun"
}
}
}

可选:设为默认运行时(所有容器默认使用 crun):

1
2
3
4
5
6
7
8
{
"default-runtime": "crun",
"runtimes": {
"crun": {
"path": "/usr/bin/crun"
}
}
}

注意:路径可能因系统而异,常见是 /usr/bin/crun 或 /usr/local/bin/crun。用 which crun 确认。

3. 重新加载Docker配置

1
2
3
sudo systemctl reload docker
# 或者重启
sudo systemctl restart docker

验证配置是否生效:

1
docker info | grep -A 5 "Runtimes"

应能看到 crun 出现在列表中。

4.使用方式

临时指定运行时(推荐测试时使用):

1
docker run --runtime crun --rm hello-world

使用默认运行时(如果设置了 default-runtime):

1
docker run --rm hello-world

5.常见问题排查

  • 路径错误:确认 path 指向正确的 crun 二进制文件。
  • 权限问题:确保 crun 有执行权限(chmod +x /usr/bin/crun)。
  • cgroup 相关错误:现代 Docker + crun 通常在 cgroup v2 下工作良好。如果出现问题,可尝试更新到较新版本的 Docker 和 crun。
  • 验证容器实际使用的运行时:
1
docker inspect <容器ID> | grep -i runtime