AIStudio SSH 公钥管理,一处配置,处处可用AIStudio SSH 公钥管理,一处配置,处处可用 ,只为更佳开发体验如何配置
Skip to content

制作镜像

在启用了「Docker 容器」功能的开发机上,有多种方式可以生成镜像。

Dockerfile

在开发机内部,支持使用 Dockerfile 定制镜像。默认可以使用 docker build,也支持手动启用 buildkit

限制与注意事项

  • 由于运营商网络原因,无法拉取 Docker Hub 镜像。建议在使用 FROM 指定基础镜像时,谨慎使用 Docker Hub 的容器镜像。
  • 如果您有可用的代理服务,可使用 --build-arg 方式指定代理,例如 docker build --build-arg HTTP_PROXY=https://my-proxy.example.com .
  • Docker 容器服务支持修改 docker 服务配置,添加 proxiesregestry-mirrors 等。修改后请重启服务。详见 Dockerctl
    • /etc/docker/daemon.json
    • /tmp/docker-config/config.json(该文件在开发机重启后会复原,无法持久化保存修改)

NOTE

如果没有稳定可靠且经过测试的第三方镜像站,建议不要使用 proxiesregestry-mirrors 这种方式。您可以设法获取镜像,然后存入平台的租户私有镜像仓库,后续从租户私有镜像仓库拉取可提供更好的速率和稳定性。

Docker commit

您可以在 Docker 容器中安装和部署一些软件,再将更新后的容器打包为一个新的镜像。

示例如下:

bash
# 列出当前运行的 Docker 容器
root@is-c6xp7vsbjlkrsbgr-devmachine-0:~# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED             STATUS             PORTS     NAMES
8be4cd831259   b3dc60511588   "/opt/nvidia/nvidia_…"   5 minutes ago       Up 5 minutes                 distracted_keller
ba3cb11d8c01   b3dc60511588   "/opt/nvidia/nvidia_…"   About an hour ago   Up About an hour             strange_bell

# 从运行中的容器创建新的镜像,并命名为 dev-cuda:v1
root@is-c6xp7vsbjlkrsbgr-devmachine-0:~# docker commit 8be4cd831259 dev-cuda:v1
sha256:a58ab0480f6f282e2e717642024db009214aacf44a28a6a423d570deff68c810

# 列出所有 Docker 镜像
root@is-c6xp7vsbjlkrsbgr-devmachine-0:~# docker images
REPOSITORY    TAG                                 IMAGE ID       CREATED         SIZE
dev-cuda      v1                                  a58ab0480f6f   3 seconds ago   3.67GB
nvidia/cuda   12.0.1-cudnn8-runtime-ubuntu22.04   b3dc60511588   2 months ago    3.62GB

WARNING

  • docker commit 会导致大量的无关内容被加入镜像,会导致镜像臃肿。
  • docker commit 方式保存的镜像不会包含共享高性能存储中的内容,不会包含云盘中的内容。

Docker save

docker save 命令可以将 Docker 镜像保存为 tar 文件。在需要从智算云平台导出镜像时,您可以通过该方式保存离线镜像文件,下载后到其他机器上使用 docker load 命令加载该镜像。

示例如下:

bash
# 将 dev-cuda:v1 镜像保存为 dev-cuda.tar
root@is-c6xp7vsbjlkrsbgr-devmachine-0:$ docker save -o /tmp/dev-cuda.tar dev-cuda:v1
sha256:a58ab0480f6f282e2e717642024db009214aacf44a28a6a423d570deff68c810

常见问题

如何导入我的私有镜像?

  • 使用镜像 tar 文件,上传至开发机后,通过 docker load 命令加载该镜像。
  • 通过镜像 URL 从其他仓库镜像拉取(或需要仓库凭证)

详见迁移外部镜像

如何拉取 Docker Hub 的镜像?

由于运营商网络原因,直接拉取 Docker Hub 镜像时会失败。建议:

  • 通过第三方代理服务,将镜像拉取到开发机,修改 tag 后再保存到租户镜像仓库,供后续引用。详见迁移外部镜像
  • 直接在 dockerfile 中通过第三方代理服务拉取镜像。

智算云平台不提供官方加速或代理服务。您可以自行使用第三方镜像加速服务。如需修改 Docker 容器服务的配置,详见 Dockerctl