2024-06-14 21:18:40 发布
网友
让我说我已经拉开了英伟达NGC PyTrac码头工人的形象: docker pull nvcr.io/nvidia/pytorch:21.07-py3
docker pull nvcr.io/nvidia/pytorch:21.07-py3
然后我想添加这些python包:omegaconf wandb pycocotools
omegaconf wandb pycocotools
如何使用原始Docker映像和其他Python包创建新的Docker映像
此外,我如何在整个组织中分发新的映像
创建一个名为Dockerfile的文件。添加下面解释的行
Dockerfile
添加FROM行以指定基本映像:
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替换为您选择的名称:
my-new-image
docker build -t my-new-image .
这对我来说是可行的,但Pip会生成一个关于以root用户身份安装包的警告。我发现最好忽略这个警告。请参阅此答案末尾的注释以了解原因
新的docker映像现在应显示在您的系统上:
$ 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
The Docker Hub Repositories documentation详细说明了以下必要步骤:
注意:非root用户的问题:尽管不以root Docker用户身份运行Docker容器被认为是“最佳实践”,但实际上非root用户可能会增加一些复杂性
您可以在docker文件中创建一个非root用户,其行如下:
RUN useradd -ms /bin/bash myuser USER myuser ENV PATH "$PATH:/home/myuser/.local/bin"
但是,如果使用-v标志运行已装入卷的容器,则myuser将根据其用户ID或组ID是否与主机系统中的用户或组匹配而被授予对这些卷的访问权限。您可以修改useradd命令行以指定所需的userid或groupid,但当然,生成的映像将无法移植到具有不同id的系统
-v
myuser
useradd
此外,似乎存在一个限制,阻止非root用户访问指向fscrypt加密文件夹的装入卷。但是,对于root docker用户来说,这很好
fscrypt
出于这些原因,我发现让容器作为根运行最简单
创建一个名为
Dockerfile
的文件。添加下面解释的行添加
FROM
行以指定基本映像:将Pip升级至最新版本:
安装所需的其他Python软件包:
总的来说,Dockerfile如下所示:
在与
Dockerfile
相同的目录中,运行此命令以生成新映像,将my-new-image
替换为您选择的名称:这对我来说是可行的,但Pip会生成一个关于以root用户身份安装包的警告。我发现最好忽略这个警告。请参阅此答案末尾的注释以了解原因
新的docker映像现在应显示在您的系统上:
现在可以运行新映像了
。。并验证它是否具有其他Python包:
The Docker Hub Repositories documentation详细说明了以下必要步骤:
注意:非root用户的问题:尽管不以root Docker用户身份运行Docker容器被认为是“最佳实践”,但实际上非root用户可能会增加一些复杂性
您可以在docker文件中创建一个非root用户,其行如下:
但是,如果使用
-v
标志运行已装入卷的容器,则myuser
将根据其用户ID或组ID是否与主机系统中的用户或组匹配而被授予对这些卷的访问权限。您可以修改useradd
命令行以指定所需的userid或groupid,但当然,生成的映像将无法移植到具有不同id的系统此外,似乎存在一个限制,阻止非root用户访问指向
fscrypt
加密文件夹的装入卷。但是,对于root docker用户来说,这很好出于这些原因,我发现让容器作为根运行最简单
相关问题 更多 >
编程相关推荐