2024-11-21 一站式 AI 平台生日大派对!2024-11-21 一站式 AI 平台生日大派对! 无问芯穹特别推出多项超值福利!立即参与
Skip to content

在开发机内使用 Docker

开发机可启用 Docker 容器(Docker in Docker, DinD)功能,允许用户在开发机内(主容器)运行其他容器,从而提供更高的灵活性和隔离性。

特别是在需要 GPU 资源的场景下,用户可以在开发机 DinD 环境中构建镜像,并创建挂载 GPU 的容器,测试容器化应用,并将构建好的镜像推送到租户镜像仓库。

NOTE

在该场景下,开发机为主容器,您在开发机内部启动的容器与主容器为互相隔离的环境,需要自行挂载 GPU 和文件存储目录。

启用方式

在创建开发机时,找到 Docker 容器开关,设置为开启。

创建开发机后,也可前往开发机详情页,通过「改配」按钮进入以下页面,调整开关启用状态。如需帮助,请参见更改开发机配置

alt text

使用场景

  • 构建镜像,并将镜像推送到租户私有镜像仓库。
  • 从现有的镜像归档文件(docker save 的压缩文件)创建镜像,并推送到租户私有镜像仓库。
  • 测试容器化应用。

已知限制

计算资源可用性

如果不需要使用 Docker 容器功能,建议在创建开发机时不要启用 Docker 容器 开关,否则容易遇到内存不足的问题。

WARNING

开启「Docker 容器」后,开发机(主容器)将固定保留 10% 的资源。剩余 90% 的 CPU 和内存资源将分配给开发机内部的容器。如果在主容器内执行耗内存的操作可能会容易导致 OOM。

存储资源可用性

  • 开发机内部启动的容器的 rootfs 空间默认为 100GB,但不支持持久化存储。
  • 如需为容器内服务提供持久化存储,请将开发机主容器的存储资源挂载给内部容器,但是暂不支持使用 -v 挂载开发机主容器的 rootfs 上的任何目录。
  • 如果开发机已挂载共享高性能存储,可以将开发机主容器的共享存储挂载给内部容器。参见启动并挂载高性能存储
  • 如果使用弹性资源创建开发机,可以将云盘上的目录挂载给内部容器。参见启动并挂载云盘

IMPORTANT

  • 不支持使用 docker volume 命令。
  • 不支持在开发机主容器内持久化保存容器镜像。一旦开发机停止运行,主容器内的镜像将自动删除,下次需要重新拉取。

GPU 可用性

在开发机内启动容器时,可以使用 --gpus=all 挂载全部 GPU,开发机(主容器)内 GPU 资源依然可用。

如果在开发机内启动多个容器,这些容器会共享 GPU 资源。

NOTE

旧版开发机启用 Docker 功能时,开发机内部容器会独占全部 GPU。如遇到开发机(主容器)无法与内部容器共享 GPU 的情况,建议将开发机关机再开机,以完成版本更新。

Docker Compose

不支持使用 Docker Compose。

权限

  • 不支持使用 --privileged 参数启动容器。
  • 如遇到文件权限问题,请提前在开发机内调整目录权限,例如 chmod -R 777 /path/to/directory
  • 部分镜像挂载的目录可能需要提前在开发机内调整所有者权限,例如 chown -R 999:999 /path/to/directory