使用 Base Command 构建 AI 卓越中心

步骤 #3:使用 Dockerfile 创建 VS Code 容器

现在我们已经验证了我们已通过 NGC 身份验证,我们可以使用 Dockerfile 构建一个可重用的容器镜像,其中包含 VS Code 和一些有用的扩展。

要创建 Dockerfile,请使用文本编辑器在本地目录中打开一个名为 “Dockerfile” 的新文件(确保使用大写 “D” 且没有扩展名)。有关 Dockerfile 语法和用法的更多信息,请参考 Docker 的官方文档

首先,我们需要指定将要使用的基础镜像。我们将使用最新的 PyTorch 容器作为我们的基础容器。也可以使用其他容器,方法是从 NGC 使用适当的基础镜像来利用不同的框架。

复制
已复制!
            

FROM nvcr.io/nvidia/pytorch:22.10-py3

接下来,我们将使用 “RUN” 指令下载特定版本的 VS Code Server,安装软件包,并删除软件包,以使镜像大小保持最小。

复制
已复制!
            

RUN wget https://github.com/coder/code-server/releases/download/v4.8.3/code-server_4.8.3_amd64.deb && \ dpkg -i code-server_4.8.3_amd64.deb && \ rm -f code-server_4.8.3_amd64.deb

接下来,我们将添加一对 “RUN” 指令来安装 ms-python 扩展和 cpptools-linux 扩展,并清理任何下载的文件。

复制
已复制!
            

RUN code-server --install-extension ms-python.python RUN wget https://github.com/microsoft/vscode-cpptools/releases/download/v1.9.8/cpptools-linux.vsix && \ code-server --install-extension cpptools-linux.vsix && \ rm -f cpptools-linux.vsix

最后,通过 Web 浏览器导航到 Visual Studio Marketplace(位于您的开发环境本地),然后在此处下载 NSight 插件的 VS Code 版本。

对于此处记录的示例,我们使用了 2022.2.31663688 版本。导航到版本历史记录选项卡,然后单击该版本上的下载

vscode-step-03-image-001.png

下载完成后,将软件包复制到与正在编辑的 Dockerfile 相同的目录。我们将添加 “COPY” 指令以将本地文件放入容器镜像中,并添加 “RUN” 指令以安装它,并在安装完成后删除软件包。

复制
已复制!
            

COPY NVIDIA.nsight-vscode-edition-2022.2.31663688.vsix NVIDIA.nsight-vscode-edition.vsix RUN code-server --install-extension NVIDIA.nsight-vscode-edition.vsix && \ rm -f NVIDIA.nsight-vscode-edition.vsix

Dockerfile 的完整内容记录在下面。

复制
已复制!
            

FROM nvcr.io/nvidia/pytorch:22.10-py3 RUN wget https://github.com/coder/code-server/releases/download/v4.8.3/code-server_4.8.3_amd64.deb && \ dpkg -i code-server_4.8.3_amd64.deb && \ rm -f code-server_4.8.3_amd64.deb RUN code-server --install-extension ms-python.python RUN wget https://github.com/microsoft/vscode-cpptools/releases/download/v1.9.8/cpptools-linux.vsix && \ code-server --install-extension cpptools-linux.vsix && \ rm -f cpptools-linux.vsix COPY NVIDIA.nsight-vscode-edition-2022.2.31663688.vsix NVIDIA.nsight-vscode-edition.vsix RUN code-server --install-extension NVIDIA.nsight-vscode-edition.vsix && \ rm -f NVIDIA.nsight-vscode-edition.vsix

现在我们的 Dockerfile 已完成,我们可以构建镜像,这将执行我们在文件中指定的步骤,并将镜像的副本保存到您的本地工作站。为此,运行以下命令,该命令将构建一个名为 “nvcr.io/lp-org-name/lp-team-name/vscode-server” 且标签为 “1.0” 的新镜像。完整的镜像名称在 “-t” 标志后指定,是第一个冒号之前的所有内容,标签是第一个冒号之后指定的所有内容。请注意,您的组织和团队名称(在本例中分别为 lp-org-name 和 lp-team-name)可能有所不同,应更新以反映从您的帐户访问的提供的组织和团队。否则,您可以随意更改镜像名称(在本例中为 “vscode-server”)和标签(不要忘记命令末尾的 “.”)。

复制
已复制!
            

docker build -t nvcr.io/lp-org-name/lp-team-name/vscode-server:1.0 .

如果您使用了与上面显示的 Dockerfile 相同的 Dockerfile,则将生成类似于以下内容的文本

复制
已复制!
            

[+] Building 74.5s (11/11) FINISHED => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 729B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for nvcr.io/nvidia/pytorch:22.10-py3 0.5s => CACHED [1/6] FROM nvcr.io/nvidia/pytorch:22.10-py3@sha256:7ad18fc3d2b9cdc35f9e5f0043987e8391fcf592c88177fdd9daa31b3b886be 0.0s => [internal] load build context 0.0s => => transferring context: 248B 0.0s => [2/6] RUN wget https://github.com/coder/code-server/releases/download/v4.8.3/code-server_4.8.3_amd64.deb && dpkg -i 19.2s => [3/6] RUN code-server --install-extension ms-python.python 34.7s => [4/6] RUN wget https://github.com/microsoft/vscode-cpptools/releases/download/v1.9.8/cpptools-linux.vsix && code-ser 15.3s => [5/6] COPY NVIDIA.nsight-vscode-edition-2022.2.31663688.vsix NVIDIA.nsight-vscode-edition.vsix 0.0s => [6/6] RUN code-server --install-extension NVIDIA.nsight-vscode-edition.vsix && rm -f NVIDIA.nsight-vscode-edition.vsi 2.5s => exporting to image 2.2s => => exporting layers 2.1s => => writing image sha256:ef6c4eb75d04c292d2b27bc9cac93222c8c574df6db21b1c14a1d98293951ce5 0.0s => => naming to nvcr.io/lp-org-name/lp-team-name/vscode-server:1.0 0.0s

要验证镜像是否与预期的存储库和标签关联,请运行 docker image list,并查看输出的顶部行,列标签下方

复制
已复制!
            

REPOSITORY TAG IMAGE ID CREATED SIZE nvcr.io/lp-org-name/lp-team-name/vscode-server 1.0 ef6c4eb75d04 2 minutes ago 17.7GB

现在我们已经在本地构建了所需的 VS Code Server 镜像,我们可以将其推送到 NGC,以便我们可以在其他机器上使用它并与队友协作。假设您已按照之前的步骤在本地登录 NGC,请运行以下命令,并根据需要更新镜像名称和标签

复制
已复制!
            

docker push nvcr.io/lp-org-name/lp-team-name/vscode-server:1.0

在推送镜像时,您将看到类似于以下的输出

复制
已复制!
            

The push refers to repository [nvcr.io/lp-org-name/lp-team-name/vscode-server] 5956863a580b: Pushed ad459ea18ba1: Pushed f733cb88d938: Pushed 3cfe55382f56: Pushed 588a40280de9: Pushed ... 1.0: digest: sha256:8cda8cd5a1b1d7f632027860f977cd35967793c66b1b950b16d1f51af0090894 size: 11699

镜像完全推送后,它应该可以在 NGC 上用于 Base Command,并允许镜像在不同的系统上本地拉取。

© 版权所有 2022-2023 NVIDIA。 上次更新于 2023 年 1 月 10 日。