当前位置: 首页 > 知识库问答 >
问题:

如何基于现有映像创建一个新的docker映像,但包含更多的Python包?

羊舌迪
2023-03-14

假设我已经将NVIDIA NGC PyTorch docker图像拉到如下位置:docker pull nvcr.io/NVIDIA/PyTorch:21.07-py3

然后我想添加这些python包:Omegaconf、wandb、PycocoTools

此外,如何在整个组织中分发新映像?

共有1个答案

百里嘉泽
2023-03-14

创建一个名为DockerFile的文件。添加下面解释的行。

添加from行以指定基本图像:

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

将Pip升级到最新版本:

RUN python -m pip install --upgrade pip

安装您需要的附加Python包:

RUN python -m pip install omegaconf wandb pycocotools

总而言之,Dockerfile如下所示:

FROM nvcr.io/nvidia/pytorch:21.07-py3
RUN python -m pip install --upgrade pip
RUN python -m pip install omegaconf wandb pycocotools

在与dockerfile相同的目录中,运行此命令构建新映像,用您选择的名称替换my-new-image:

docker build -t my-new-image .
$ docker images
REPOSITORY                         TAG                            IMAGE ID       CREATED              SIZE
my-new-image                       latest                         082f76972805   13 seconds ago   15.1GB
nvcr.io/nvidia/pytorch             21.07-py3                      7beec3ff8d35   5 weeks ago          15GB
[...]

您现在可以运行新映像。

$ docker run --gpus all -it --rm --ipc=host my-new-image

..并验证它是否有附加的Python包:

# python -m pip list | grep 'omegaconf\|wandb\|pycocotools'
omegaconf                     2.1.1
pycocotools                   2.0+nv0.5.1
wandb                         0.12.1

Docker Hub存储库文档详细说明了以下步骤:

    null
RUN useradd -ms /bin/bash myuser
USER myuser
ENV PATH "$PATH:/home/myuser/.local/bin"

由于这些原因,我发现让容器作为root运行是最容易的。

 类似资料:
  • 问题内容: 将获得多个标签图像。 是否可以通过像ubuntu这样的 Dockerfile 创建多个标签? 在这里,我需要的是不同内容的标签。(具有多个别名标签的内容不同) 问题答案: 您不能使用Dockerfiles创建标签,但是可以通过命令行在映像上创建多个标签。 使用此列表列出您的图片ID: 然后标记:

  • 问题内容: 我有一个泊坞窗映像,我想找出它是从哪个映像创建的。当然有多层,但是我想找出最后一张图像(dockerfile中该图像的FROM语句)? 我尝试使用,但无法在其中找到此信息。 我尝试使用以下命令,但它给我一条错误消息 这是我收到的错误消息 问题答案: 您可以使用此答案中建议的方法:https : //stackoverflow.com/a/53841690/3691891 首先,拉: 获

  • 问题内容: 我们可以使用没有源映像(OS)的docker文件创建docker映像吗 我们不希望在所有应用程序docker映像中使用基本映像(centos或rhel)。我们想要将基本映像(centos或rhel)与应用程序映像分开,并在运行时将它们链接起来。可能吗? 当我 不使用 或构建docker映像时,docker抱怨:“提交前提供源映像” 我的docker文件如下所示: 问题答案: 您说过:“

  • 问题内容: 根据Docker文档,要构建自己的映像,您必须始终使用指令指定基本映像。 显然,Docker索引中有很多图像可供选择,但是如果我想构建自己的图像怎么办?那可能吗? 如果我理解正确,该映像是在Ubuntu上构建的,并且我想尝试使用Debian映像。另外,我想真正了解Docker的工作原理,该映像对我来说仍然是一个黑匣子。 编辑: 有关创建基本映像的官方文档 问题答案: 您可以看一下如何创

  • 问题内容: 我使用的是官方的Elasticsearch Docker映像, 而不是设置自己的elasticsearch实例。效果很好,直到我想要扩展它为止。我想在该ElasticSearch实例中安装奇迹以获取更多信息。 现在dockerfile / elasticsearch会自动运行ElasticSearch并将命令设置为不起作用,也不会附加到容器或尝试通过SSH访问它,也不会使用来安装ssh