You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Slurm HPC集群(Ubuntu系统)中安装Docker及运行容器咨询

在Ubuntu Slurm HPC集群中部署容器工具指南

一、安装Docker(普通模式)

步骤1:清理旧版本

sudo apt remove -y docker docker-engine docker.io containerd runc

步骤2:配置Docker官方仓库

sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

步骤3:安装Docker引擎

sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io

步骤4:验证安装

sudo docker run hello-world

步骤5:配置Slurm用户权限

将提交作业的用户加入docker组,避免每次使用sudo:

sudo usermod -aG docker $USER

执行后退出当前会话重新登录生效。

二、安装无根Docker(Rootless Docker)

无根模式无需root权限,更适合多用户HPC环境:

步骤1:满足系统依赖

确保Ubuntu版本≥20.04、内核≥5.4,安装必要工具:

sudo apt install -y uidmap slirp4netns docker-ce-rootless-extras

步骤2:初始化无根Docker

执行官方初始化脚本:

dockerd-rootless-setuptool.sh install

步骤3:验证安装

无需sudo直接运行:

docker run hello-world

三、Slurm中运行容器的配置要点

1. 确保Docker服务运行

  • 普通Docker:在所有计算节点启用并启动服务
    sudo systemctl enable --now docker
    
  • 无根Docker:每个用户需启用自己的用户级服务
    systemctl --user enable --now docker
    
    若Slurm作业中无法启动用户服务,需配置PAM会话保留用户systemd实例(修改/etc/pam.d/slurm添加session required pam_systemd.so)

2. Slurm作业脚本示例

普通Docker作业脚本

#!/bin/bash
#SBATCH --job-name=docker-test
#SBATCH --nodes=1
#SBATCH --ntasks=1

docker run ubuntu:latest /bin/bash -c "echo 'Hello from Docker container on node $(hostname)'"

无根Docker作业脚本

#!/bin/bash
#SBATCH --job-name=rootless-docker-test
#SBATCH --nodes=1
#SBATCH --ntasks=1

# 确保用户级Docker服务启动
systemctl --user start docker
docker run ubuntu:latest /bin/bash -c "echo 'Hello from rootless Docker container on node $(hostname)'"

3. 性能与网络优化

  • 普通Docker:可使用--network=host直接复用主机网络,提升性能,但需注意端口冲突
  • 无根Docker:默认使用slirp4netns网络,性能略低,可通过配置dockerd使用网桥模式(需额外权限配置)

四、HPC场景推荐的替代容器工具

1. Apptainer(原Singularity)

HPC领域最主流的容器工具,天生支持无根运行,镜像只读可移植,与Slurm集成完美:

  • 安装:
    sudo apt install -y apptainer
    
  • 作业脚本示例:
    #!/bin/bash
    #SBATCH --job-name=apptainer-test
    #SBATCH --nodes=1
    #SBATCH --ntasks=1
    
    apptainer exec docker://ubuntu:latest /bin/bash -c "echo 'Hello from Apptainer container on node $(hostname)'"
    

2. Podman

与Docker命令完全兼容的无根容器工具,无需守护进程,资源占用更低:

  • 安装:
    sudo apt install -y podman
    
  • 运行方式与Docker一致,直接替换docker为podman即可

3. Charliecloud

轻量级HPC容器工具,无守护进程,镜像转换简单,适合对资源占用敏感的场景:

  • 安装:
    sudo apt install -y charliecloud
    
  • 基本使用:
    ch-image pull ubuntu:latest
    ch-run ubuntu:latest -- echo "Hello from Charliecloud container"
    

内容的提问来源于stack exchange,提问作者Sergiu Neagoe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 08:53:29