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

在开发机内使用 Docker

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

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

NOTE

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

启用方式

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

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

alt text

使用场景

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

已知限制

计算资源可用性

如果不需要使用 Docker 容器功能,建议在创建开发机时不要启用 Docker 容器 开关,避免额外开销。

NOTE

开启「Docker 容器」后,开发机(主容器)与内部容器共享 CPU 和内存资源。

存储资源可用性

可用的持久化存储:

非持久化存储:

  • 开发机内部容器的 rootfs 空间默认为 100GB,不支持持久化存储。

IMPORTANT

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

GPU 可用性

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

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

Docker Compose

支持使用 Docker Compose,但需要自行安装工具。详见Docker Compose

权限

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

常见问题

如何添加 proxy 或 mirror 配置?

详见 Dockerctl