新老用户进群领券,100% 有券等你来冲!新老用户进群领券,100% 有券等你来冲! 体验按量付费开发机!立即领券
Skip to content

制作镜像

在启用了「Docker 容器」功能的开发机上,除了标准的使用 Dockerfile 生成镜像的方法外,还提供了一些其它方法用以生成镜像。

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 方式保存的镜像不会包含共享高性能存储中的内容,不会包含云盘中的内容。

Dockerfile

在开发机内部,支持使用 Dockerfile 定制镜像。

NOTE

由于运营商网络原因,会导致您拉取 Docker Hub 镜像时下载失败。建议您在生产环境中谨慎使用依赖于 Docker Hub 的容器镜像。

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 命令加载该镜像。详见迁移外部镜像