假设我已经将NVIDIA NGC PyTorch docker图像拉到如下位置:docker pull nvcr.io/NVIDIA/PyTorch:21.07-py3
然后我想添加这些python包:Omegaconf、wandb、PycocoTools
?
此外,如何在整个组织中分发新映像?
创建一个名为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存储库文档详细说明了以下步骤:
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