操作容器
本文将具体介绍如何使用开发机的「Docker 容器」功能管理一个容器,包括创建、启动和停止等。
NOTE
请确保该开发机已打开「Docker 容器」开关。您可以前往开发机详情页检查「Docker 容器」开关状态,通过「改配」按钮开启该功能。
启动容器
作为测试,您可以从智算云平台镜像中心的公共仓库(cr.infini-ai.com/infini-ai
)中拉取预置镜像,并启动一个容器。
例如,下面的命令启动并进入容器:
shell
# 例1 登入开发机后,执行以下命令启动容器输出一个 “Hello World”,之后终止容器。
docker run --rm --name ubuntu cr.infini-ai.com/infini-ai/ubuntu:22.04-20240429 /bin/echo 'Hello world'
# 例2 登入开发机后,启动容器并进入容器
docker run -it --name ubuntu cr.infini-ai.com/infini-ai/ubuntu:22.04-20240429 bash
您可以从镜像中心获取预置镜像地址。
启动并挂载主容器本地目录
开发机主容器系统盘提供 50GB 持久化存储,可使用 -v
选项将主容器本地目录挂载至容器内。
例如,-v ~:/home/host
将主容器的 HOME 目录挂载到容器内的 /home/host
挂载点。
shell
docker run -it -v ~:/home/host --name ubuntu cr.infini-ai.com/infini-ai/ubuntu:22.04-20240429 bash
启动并挂载高性能存储
如开发机已挂载共享高性能存储,则可使用 -v
选项将主容器的高性能存储(默认 /mnt
)挂载至容器内。
例如,-v /mnt/public:/mnt
将主容器的 /mnt
目录挂载到容器内的 /mnt
挂载点。
shell
docker run -it -v /mnt/public:/mnt --name ubuntu cr.infini-ai.com/infini-ai/ubuntu:22.04-20240429 bash
启动并挂载云盘
如果是使用弹性资源创建的开发机,且可使用云盘,则可使用 -v
选项将主容器的云盘目录(默认 /datadisk
)挂载至容器内。
挂载前,请先在开发机内修改云盘目录权限,否则无法写入数据:
shell
mkdir /datadisk/host-shared
chmod -R 777 /datadisk/host-shared
例如,-v /datadisk/host-shared:/host-shared
将主容器的 /datadisk/host-shared
目录挂载到容器内的 /host-shared
挂载点。
shell
docker run -it -v /datadisk/host-shared:/host-shared --name ubuntu cr.infini-ai.com/infini-ai/ubuntu:22.04-20240429 bash
启动并挂载 GPU
例如,使用 CUDA 镜像,启动一个带有 GPU 的 Docker 容器。
shell
docker run -it --gpus=all cr.infini-ai.com/infini-ai/cuda:12.2.2-cudnn8-devel-ubuntu20.04
TIP
- 使用
--gpus=all
挂载开发机所有的 GPU 设备。 - 旧版开发机启用 Docker 功能时,开发机内部容器会独占全部 GPU。如遇到开发机(主容器)无法与内部容器共享 GPU 的情况,建议将开发机关机再开机,以完成版本更新。
修改默认共享内存大小
如果对共享内存(/dev/shm
) 的大小有要求,可以使用 --shm-size
指定共享内存大小。共享内存默认值为 64MB
,最大值可调整至为开发机内存 90% 的一半。
shell
docker run -it --shm-size=403g --gpus=all -v /mnt/public:/mnt cr.infini-ai.com/infini-ai/cuda:12.2.2-cudnn8-devel-ubuntu20.04