一个基本的用户工具,用于在无需root权限的情况下批量或交互式系统中执行简单的Docker容器
项目描述
udocker是一个基本的用户工具,用于在用户空间中执行简单的Docker容器,无需root权限。它可以在Linux系统中下载和执行Docker容器,即使该系统中没有安装Docker。它可以用于在由其他实体(如网格基础设施或外部管理的批处理或交互式系统)管理的Linux批处理系统和交互式集群中拉取和执行Docker容器。
udocker 不需要任何类型的权限,也不需要系统管理员部署服务。它可以由最终用户下载和完全执行。udocker的一些执行模式提供的有限的root功能要么是模拟的,要么是通过用户命名空间提供的。
udocker 是围绕几个工具和库的包装器,以模拟docker能力的一个子集,包括拉取镜像和运行具有最小功能容器的操作。
**重要通知:自udocker 1.3.17起,我们已更改udocker工具的位置。这影响了配置选项conf['tarball']
和环境变量UDOCKER_TARBALL
,所以如果您正在使用udocker <= 1.3.16,请确保: export UDOCKER_TARBALL=https://download.a.incd.pt/udocker/udocker-englib-1.2.11.tar.gz
。
文档
完整的文档可在以下位置找到:
它是如何工作的
udocker是用Python编写的,它具有最小的依赖性集合,因此可以在广泛的Linux系统中执行。
udocker不使用docker,也不需要它的存在。
udocker“执行”容器,只需提供一个类似chroot的环境即可提取容器。当前实现支持不同的方法来模拟chroot,从而在没有权限的情况下在类似chroot的环境中执行容器。udocker透明地支持多种基于外部工具和库的方法来执行容器,如
- PRoot
- Fakechroot
- runc
- crun
- Singularity
除了Singularity之外,支持执行的工具和库在安装过程中由udocker下载和部署。此安装是在用户主目录中执行的,不需要权限。udocker相关的文件,如库、可执行文件、文档、许可证、容器镜像和提取的目录树,默认放置在$HOME/.udocker
下。
优势
- 可以由最终用户部署
- 安装不需要权限
- 执行不需要权限
- 不需要编译,只需传输Python代码
- 封装了多个工具和执行方法
- 包括已静态编译的所需工具,可在不同系统上工作
- 提供类似docker的命令行界面
- 支持docker命令的子集:搜索、拉取、导入、导出、加载、保存、登录、登出、创建和运行
- 理解docker容器元数据
- 允许加载docker和OCI容器
- 支持NVIDIA GPGPU应用程序
- 可以在Linux命名空间支持不可用的系统和环境中执行
- 在包括:CentOS 6、CentOS 7、CentOS 8、Ubuntu 14、Ubuntu 16、Ubuntu 18、Ubuntu 20、Ubuntu 21、Alpine、Fedora等新旧Linux发行版上运行
Python 2和Python 3
从v1.3.0版本开始,udocker支持Python 2.7和Python >= 3.6。原始udocker v1.1.x(用于Python 2)不再维护,但仍然可用 此处。
语法
Commands:
search <repo/expression> :Search dockerhub for container images
pull <repo/image:tag> :Pull container image from dockerhub
create <repo/image:tag> :Create container from a pulled image
run <container> :Execute container
run <repo/image:tag> :Pull, create and execute container
images -l :List container images
ps -m -s :List created containers
name <container_id> <name> :Give name to container
rmname <name> :Delete name from container
rename <name> <new_name> :Change container name
clone <container_id> :Duplicate container
rm <container-id> :Delete container
rmi <repo/image:tag> :Delete image
tag <repo/image:tag> <repo2/image2:tag2> :Tag image
import <tar> <repo/image:tag> :Import tar file (exported by docker)
import - <repo/image:tag> :Import from stdin (exported by docker)
export -o <tar> <container> :Export container directory tree
export - <container> :Export container directory tree
load -i <imagefile> :Load image from file (saved by docker)
load :Load image from stdin (saved by docker)
save -o <imagefile> <repo/image:tag> :Save image with layers to file
inspect <repo/image:tag> :Return low level information on image
inspect -p <container> :Return path to container location
verify <repo/image:tag> :Verify a pulled or loaded image
manifest inspect <repo/image:tag> :Print manifest metadata
protect <repo/image:tag> :Protect repository
unprotect <repo/image:tag> :Unprotect repository
protect <container> :Protect container
unprotect <container> :Unprotect container
mkrepo <top-repo-dir> :Create another repository in location
setup :Change container execution settings
login :Login into docker repository
logout :Logout from docker repository
help :This help
run --help :Command specific help
version :Shows udocker version
Options common to all commands must appear before the command:
-D :Debug
--quiet :Less verbosity
--repo=<directory> :Use repository at directory
--insecure :Allow insecure non authenticated https
--allow-root :Allow execution by root NOT recommended
示例
一些使用示例
在dockerhub中搜索容器镜像并列出标签。
udocker search fedora
udocker search ubuntu
udocker search debian
udocker search --list-tags ubuntu
从dockerhub拉取并列出拉取的镜像。
udocker pull fedora:39
udocker pull busybox
udocker pull iscampos/openqcd
udocker images
从除dockerhub之外的注册表拉取。
udocker search quay.io/bio
udocker search --list-tags quay.io/biocontainers/scikit-bio
udocker pull quay.io/biocontainers/scikit-bio:0.2.3--np112py35_0
udocker images
拉取不同的架构,例如arm64而不是amd64。
udocker manifest inspect centos/centos8
udocker pull --platform=linux/arm64 centos/centos8
udocker tag centos/centos8 mycentos/centos8:arm64
从拉取的镜像创建容器,给创建的容器命名并运行。创建的容器可以多次运行,直到明确删除。在容器中修改或添加的文件将在执行之间保持可用,直到容器被删除。
udocker create --name=myfed fedora:29
udocker run myfed cat /etc/redhat-release
拉取、创建和运行这三个步骤也可以在一个命令中完成,但这种方法对于相同容器的多次调用将非常慢,因为对于每次调用都会创建一个新的容器。这种方法还会消耗更多存储空间。以下示例为每次调用创建一个新的容器。
udocker run fedora:29 cat /etc/redhat-release
执行将主机 /home/u457 挂载到容器目录 /home/cuser 中。请注意,您可以在容器内“挂载”任何主机目录。根据执行模式,“挂载”的实现方式不同,可能会有限制。
udocker run -v /home/u457:/home/cuser -w /home/user myfed /bin/bash
udocker run -v /var -v /proc -v /sys -v /tmp myfed /bin/bash
在您的宿主 /tmp 中放置一个脚本并在容器中执行它。请注意,与之前的版本相比,--entrypoint
的行为已更改,以更好地与 Docker 兼容。
udocker run -v /tmp --entrypoint="" myfed /bin/bash -c 'cd /tmp; ./myscript.sh'
udocker run -v /tmp --entrypoint=/bin/bash myfed -c 'cd /tmp; ./myscript.sh'
执行将主机 /var、/proc、/sys 和 /tmp 挂载到相同的容器目录中。请注意,这些容器目录的内容将被主机文件混淆。
udocker run -v /var -v /proc -v /sys -v /tmp myfed /bin/bash
在容器中安装软件。
udocker run --user=root myfed yum install -y firefox pulseaudio gnash-plugin
以某个用户身份运行。用户名应在容器中存在。
udocker run --user 1000:1001 myfed /bin/id
udocker run --user root myfed /bin/id
udocker run --user jorge myfed /bin/id
运行 Firefox。
udocker run --bindhome --hostauth --hostenv \
-v /sys -v /proc -v /var/run -v /dev --user=jorge --dri myfed firefox
将执行引擎模式从 PRoot 更改为 Fakechroot 并运行。
udocker setup --execmode=F3 myfed
udocker run --bindhome --hostauth --hostenv \
-v /sys -v /proc -v /var/run -v /dev --user=jorge --dri myfed firefox
将执行引擎模式更改为加速的 PRoot。
udocker setup --execmode=P1 myfed
将执行引擎更改为 runc。
udocker setup --execmode=R1 myfed
将执行引擎更改为 Singularity。要求宿主系统中存在 Singularity。
./udocker setup --execmode=S1 myfed
在 Singularity 中以 root 模拟方式运行软件安装
udocker setup --execmode=S1 myfed
udocker run --user=root myfed yum install -y firefox pulseaudio gnash-plugin
更改执行以启用准备好 nvidia 的应用程序。要求在宿主系统中安装 nvidia 驱动程序。
udocker setup --nvidia mytensorflow
安全性
默认情况下,udocker 通过 PRoot 提供root用户的模拟。这种模拟模仿了真实root用户(例如,getuid 将返回 0)。这只是一种模拟,不涉及root权限。此功能使得某些工具的执行成为可能,这些工具不需要实际权限,但如果用户名或 ID 不是root或0,则拒绝工作。例如,可以在容器中使用 rpm、yum 或 dnf 进行软件安装。
udocker 不提供与 Docker 提供的类似的强大隔离功能。因此,如果容器内容不可信,则不应使用 udocker 执行这些容器,因为它们将在用户环境中运行。因此,udocker 不应由特权用户运行。
容器镜像和文件系统将被解包并存储在用户家目录下的 $HOME/.udocker
或其他选择的位置。因此,容器数据将受到与用户拥有的其他文件相同的文件系统保护。如果容器包含敏感信息,则用户应充分保护文件和目录。
udocker 不需要权限,并以调用它的用户的身份运行。用户可以下载 udocker 并执行它,而无需系统管理员干预。
udocker 还提供使用 runc、crun 和 Singularity 的执行,这些模式使用无根命名空间,使普通用户能够以受限的方式以 root 身份执行,这些限制适用于用户命名空间和这些工具。
当由普通非特权用户执行时,udocker 限制了权限提升问题,因为它不使用或需要系统权限。
一般限制
由于不涉及root权限,因此任何真正需要此类权限的操作将无法完成。以下是一些无法完成的操作示例
- 访问受保护的主机设备和文件
- 监听 TCP/IP 特权端口(小于 1024 的范围)
- 挂载文件系统
- su 命令将无法工作
- 更改系统时间
- 更改路由表、防火墙规则或网络接口
如果容器需要此类权限能力,则应使用 Docker。
udocker 的用途不是创建容器。容器的创建最好使用 Docker 和 Dockerfile 进行。
udocker 不提供所有 Docker 功能,也不打算作为 Docker 的替代品。
udocker 主要面向提供在用户空间中执行容器运行时的环境。udocker 特别适用于运行封装在 Docker 容器中的用户应用程序。
使用 PRoot 引擎进行调试或使用 strace 不会生效,因为调试器和 PRoot 使用相同的跟踪机制。
执行模式特定限制
udocker 提供多种执行模式,利用多个外部工具,如 PRoot(P 模式)、Fakechroot(F 模式)、runC(R 模式)、crun(R 模式)和 Singularity(S 模式)。
当使用 F2、F3 和 F4 等假根 chroot 模式时,创建的容器无法跨主机移动。在这种情况下,在传输之前转换回 Pn 模式。如果主机属于具有相同挂载点和目录结构的同构集群,则无需这样做。此限制适用于容器目录的绝对真实路径更改时。
PRoot 的默认加速模式(P1 模式)可能在 4.0 以上的 Linux 内核中出现问题,这是由于内核更改和上游问题,在这种情况下,请使用 P2 模式或任何其他执行模式。
./udocker setup --execmode=P2 my-container-id
假根 chroot 模式(Fn 模式)需要针对容器中包含的 libc 编译的共享库。udocker 为多个 Linux 发行版提供这些库,这些共享库由 udocker 在以下位置安装:
$HOME/.udocker/lib/libfakechroot-*
runc 和 crun 模式(R 模式)需要启用用户命名空间的内核。
Singularity 模式(S 模式)需要主机系统上存在 Singularity。Singularity 不包含在 udocker 中。
元数据生成
初始的 codemeta.json
元数据文件是用 codemetapy
包生成的。
codemetapy udocker --with-orcid --affiliation "LIP Lisbon" \
--buildInstructions "https://https://github.com/indigo-dc/udocker/blob/master/docs/installation_manual.md#3-source-code-and-build" \
--citation "https://doi.org/10.1016/j.cpc.2018.05.021" \
--codeRepository "https://github.com/indigo-dc/udocker" \
--contIntegration "https://jenkins.eosc-synergy.eu/job/indigo-dc/job/udocker/job/master/" --contributor "Mario David" \
--copyrightHolder "LIP" --copyrightYear "2016" --creator "Jorge Gomes" \
--dateCreated "2021-05-26" --maintainer "Jorge Gomes" \
--readme "https://github.com/indigo-dc/udocker/blob/master/README.md" \
--referencePublication "https://doi.org/10.1016/j.cpc.2018.05.021" \
--releaseNotes "https://github.com/indigo-dc/udocker/blob/master/changelog" \
-O codemeta.json
可能需要进一步更新以在元数据文件中添加正确的值。
贡献
请参阅:贡献
引用
请参阅:引用
引用 udocker 时,请使用以下内容:
- Jorge Gomes, Emanuele Bagnaschi, Isabel Campos, Mario David, Luís Alves, João Martins, João Pina, Alvaro López-García, Pablo Orviz, Enabling rootless Linux Containers in multi-user environments: The udocker tool, Computer Physics Communications, Available online 6 June 2018, ISSN 0010-4655, https://doi.org/10.1016/j.cpc.2018.05.021
许可
重新分配、商业用途和代码更改必须考虑 udocker 中包含的所有许可证。这包括 udocker 许可证 以及与 udocker 一起打包的外部工具和库的单独许可证。有关更多信息,请参阅安装手册中的 软件许可证部分。
致谢
- Docker https://docker.net.cn/
- PRoot https://proot-me.github.io/
- Fakechroot https://github.com/dex4er/fakechroot/wiki
- Patchelf https://github.com/NixOS/patchelf
- runC https://runc.io/
- crun https://github.com/containers/crun
- Singularity https://www.sylabs.io/
- 开放容器倡议 https://www.opencontainers.org/
- INDIGO DataCloud https://www.indigo-datacloud.eu
- DEEP-Hybrid-DataCloud https://deep-hybrid-datacloud.eu
- EOSC-hub https://eosc-hub.eu
- EGI-ACE https://www.egi.eu/projects/egi-ace/
- EOSC-Synergy https://www.eosc-synergy.eu/
- DT-Geo https://dtgeo.eu/
- LIP https://www.lip.pt
- INCD https://www.incd.pt
这项工作是在H2020项目INDIGO-Datacloud(RIA 653549)框架内进行的,并得到EOSC-hub(Horizon 2020)项目(资助编号777536)、DEEP-Hybrid-DataCloud(Horizon 2020)项目(资助编号777435)、DT-Geo(Horizon Europe)项目(资助编号101058129)的联合资助进一步发展。软件质量保证是在EOSC-Synergy(Horizon 2020)项目的支持下进行的。作者们希望感谢INCD-Infraestrutura Nacional de Computação Distribuída(由FCT、P2020、Lisboa2020、COMPETE和FEDER资助,项目编号22153-01/SAICT/2016)的支持。
变更日志
udocker (1.3.17) - 2024-08-28
- 更新docker工具的url位置
udocker (1.3.16) - 2024-04-09
- 修复单元测试:移除在python 3.12中引入的无效断言 called_with 和 called_once_with
- 本版本与1.3.14相同
udocker (1.3.14) - 2024-04-04
- 支持使用runsc作为执行模式R1的引擎:关闭#414
- 新选项
login --password-stdin
:关闭#168 - 新选项
run --pull=reuse
,可用于与--name=一起使用,并以镜像名称作为参数。与始终拉取并创建新容器不同,--pull=reuse允许执行现有容器,并且只有当容器不存在时才进行拉取+创建 - 新选项
run --httpproxy=<proxy>
:关闭#418 - 改进login中注册名称的处理:关闭#168
- 改进pull中镜像名称的处理:关闭#168
- 改进卸载挂载点的处理:关闭#406,#399
- 支持AWS ECR注册表:关闭#168
- 在单元测试中删除pycurl依赖
- 文档修复
udocker (1.3.13) - 2024-02-05
- udocker改进二进制可执行文件选择
- udocker修复fakechroot对so、exec_path的解析以及添加cmd替换
- udocker实现轻微的pylint合规性改进
- udocker模式Pn在配置中将links2symlinks禁用默认:关闭#412
- 新的udockertools 1.2.11 tar包
- udockertools模式Fn glibc修复dladdr(), dlopen(), dlmopen(), dl_iterate_phdr()
- udockertools模式Fn glibc添加dladdr1()
- udockertools模式Fn glibc添加execvpe(), execveat()
- udockertools模式Fn glibc添加getauxval()
- udockertools模式Fn glibc添加scandirat(), scandirat64()
- udockertools模式Fn glibc更改stat64(), lstat64(), stat()
- udockertools模式Fn glibc缩小program_invocation_name的范围
- udockertools模式Fn glibc改进命令替换
- udockertools模式Fn musl修复dladdr(), dlopen(), dlmopen(), dl_iterate_phdr()
- udockertools模式Fn musl execvpe()
- udockertools模式Fn musl改进命令替换
- udockertools模式Fn添加对Alpine 3.19(x86_64)的支持
- udockertools模式Fn添加对Fedora 39(x86_64、aarch64、ppc64le)的支持
- udockertools模式Rn包含runc 1.1.12
udocker (1.3.12) - 2023-11-02
- 修复单元测试,与1.3.11相比没有修改
udocker (1.3.11) - 2023-10-23
- 在Pn模式下添加对硬链接到符号链接转换的支持,因为无特权的用户无法创建硬链接:部分解决#388
- 检查Pn模式中网络扩展的可用性,用于端口映射和netcoop,并且仅在被调用的proot引擎支持的情况下使用。
- 改进udocker在导入时生成的镜像元数据:关闭#398
udocker (1.3.10) - 2023-07-03
- 改进对容器平台信息的处理
- 在Pn模式下添加对QEMU的支持,允许执行与主机架构不同的容器
- Sn模式下的可执行文件选择现在默认为apptainer,其次为singularity
- 新命令
manifest inspect
允许显示镜像清单,从而启用对给定镜像支持的平台的目录的访问 - 新命令
tag
允许更改现有镜像的名称 - 新选项
pull --platform=os/architecture
允许拉取给定架构的镜像,该架构可能与主机不同 - 新选项
run --platform=os/architecture
允许拉取和运行与主机不同架构的镜像 - 新选项
import --platform=os/architecture
允许指定镜像的架构 - 新选项
ps -p
允许列出容器的架构 - 新选项
images -p
允许列出容器的架构 - 构建 udockertools 1.2.10 并将其设置为默认
- udockertools 对 Fn 的支持现在包括 Ubuntu 23:04、Fedora 38、Alpine 3.17 和 3.18。
- 为 Fedora 36、Fedora 37、Fedora 38、CentOS 7、AlmaLinux 8、AlmaLinux 9 和 Ubuntu 22、Ubuntu 20、Ubuntu 18 以及类似系统提供原生 Fn 执行的实验性支持。
- 为 CentOS 7、AlmaLinux 8、AlmaLinux 9、Ubuntu 22、Ubuntu 20、Ubuntu 18 以及类似系统提供原生 Fn 执行在 ppc64le 上的实验性支持。
- 为 arm64 和 ppc64le 提供实验性 runc 支持
- 更新了针对 x86、x86_64、arm64 的 Pn 引擎版本:解决 #393
udocker (1.3.9) - 2023-06-07
- 添加从容器访问非配置元数据的功能
- 添加了对多平台清单和索引的支持:关闭 #392、#355
udocker (1.3.8) - 2023-03-24
- 构建 udockertools 1.2.9 并将其设置为默认
- 为 Ubuntu:22 添加 Fn 支持
- 移除要安装的文件
- 设置 Fn 首选使用 runc
udocker (1.3.7) - 2023-01-24
- 移除过时的单元测试。udocker 与版本 1.3.6 相同
udocker (1.3.6) - 2023-01-19
- 重新实现 udocker 命名空间:关闭 #380
- 登录总是失败:关闭 #379
- 忽略已存在的镜像加载:关闭 #378
udocker (1.3.5) - 2022-10-21
- 修复 Python 兼容性问题:关闭 #374
- 修复镜像验证错误报告不正确
- 修复镜像搜索返回空结果的问题
- 修复 udocker 可执行文件路径中逻辑链接的问题
- 在创建或克隆之前添加检查以验证容器名称是否存在
- 添加 --force 选项以创建和克隆,允许即使给定的 --name 名称存在也能创建容器
- 在引擎调用时防止关闭文件描述符,提高了 PMI 进程管理接口互操作性
- 修复使用管道时导入和导出的问题
- 修复在 "library" 组件缺失时解析镜像名称的问题:关闭 #359
udocker (1.3.4) - 2022-08-26
- 修复 2 个单元测试
udocker (1.3.3) - 2022-08-23
- 镜像列表没有截断长名称:关闭 #349
- 修复验证镜像中的条件警告
- 修复并改进 udocker 高级测试
udocker (1.3.2) - 2022-08-17
- 修复字符串中缺失的 f (格式)
- 修复 dict .items() 的错误
- 解决几个 pylint 问题
- 移除 use2to3:关闭 #358
udocker (1.3.1) - 2021-06-24
- 添加 --entrypoint 到 run --help
- 设置 docker hub 仓库 registry 为 registry-1.docker.io
- 修复 search --list-tags 中的仓库名称
- 改进测试:udocker_test.sh 和 udocker_test-run.sh
- 文档修订和改进
- 将许可证和许可证通知添加到文档中
- 添加测试说明
- Python 3.8 中 --allow-root 的问题
- 添加安全策略 SECURITY.md
- 移除旧的 Python 2 测试
- 修复配置层次结构和配置文件
- 更新文档:README、用户和安装手册
- 修复 sqa 和配置
udocker (1.3.0) - 2021-06-05
- 为将稳定代码从 Python 3 和 Python 2 >= 2.6 移动到 master 准备
- 安装程序自 1.1.x 系列以来已更改,请参阅
installation_manual
- 改进用户和安装文档
- 在安装时提取文档
- 添加 codemeta.json,软件的元数据
- 在 Pn 和 Fn 执行模式下添加对
faccessat2()
的支持 - 修复 Pn 执行模式中对
newfstatat()
的支持 - 为 Fedora 34 和 Ubuntu 21.04 添加 Fn 库
- 移除 FileUtil.remove() 中的损坏链接
- 将最小 udocker 工具 tarball 更新到 1.2.8
- 命令和入口点元数据和参数处理已改为模拟docker
- 改进安装和文件绑定恢复中文件和链接的删除
- 将跟踪位置选项添加到GetURL()
- 实现使用
--entrypoint=<cmd>
强制执行命令:关闭#306 - 实现使用
--entrypoint=""
在元数据中跳过入口点:关闭#306
udocker (1.2.9) - 2021-05-24
- 方法Unshare.unshare os.strerror()接受一个参数:关闭#254
- 为#254添加单元测试
- 方法chown udocker.utils.fileutil FileUtil:关闭#276
- 修复了单元测试和pylint的几个问题
- 修复了退出代码0和推断的False之间的混淆
- 在
safe_prefixes
上取消引用 - untar排除dev
- 修复rmi对引用层的支持
- 设置
PROOT_TMP_DIR
的默认值 - sysdir挂载点未找到,并设置tmpdir
- 更新安装说明
- 改进
oskernel_isgreater()
- 改进
osinfo()
- 修复仓库登录/注销问题
- 改进密钥存储逻辑
- 修复/v2的pull问题
udocker (1.2.8b2) - 2021-05-04
- 修复Rn模式,以启用从只读目录执行容器
- 集中化安装和只读设置文档
- 修复/v2中处理dockerhub仓库名称的问题
- 改进文档并与1.1.8b2保持一致
- 添加致谢
- 修复删除具有符号链接的路径:关闭#267、#265
- 修复登录凭据问题:关闭#310
- 修复在Termux中从Docker Hub拉取镜像:关闭#307
- 修复在googlecolab中运行udocker的问题:关闭#286
- 修复在替代/tmp中的Pn模式下执行的问题:关闭#284
- 在解包层时添加有条件的延迟目录恢复
- 在层解包时排除白名单
- 将--nobanner添加到udocker run
udocker (1.2.7) - 2021-01-26
- 对代码进行重大重构
- 对单元测试进行重大重构
- 移植到Python 3,仍支持python 2.7
- 应用了所有到上一个1.1.7版本的修复
- 添加了脚本测试udocker:
utils/udocker_test.sh utils/udocker_test-run.sh
udocker (1.1.8) - 2021-06-16
- 最后的1.1.x版本
- 修复Rn模式,以启用从只读目录执行容器
- 集中化安装和只读设置文档
udocker (1.1.7) - 2021-02-21
- 修复当Linux 4.8.0 SECCOMP回滚时P1的问题,影响较新的CentOS 7:关闭#282
- 在删除时检查文件所有权错误地遵循符号链接:关闭#266、#267
- udocker意外使用P1执行模式而不是P2:关闭#274
- 允许传递
PROOT_TMP_DIR
环境变量:关闭#284
udocker (1.1.6)
- 对ELF路径在Fn模式下"$ORIGIN:$ORIGIN"的完整修复:关闭#255
udocker (1.1.5)
- 对ELF路径在Fn模式下$ORIGIN:$ORIGIN的初步修复
- 为Ubuntu20、Fedora32、Fedora33添加Fn库
- 为Alpine 3.12、3.13添加Fn库
udocker (1.1.4-1) - 2020-01-10
- 修复run --location
- 修复udocker集成帮助
- 修复容器命名
- 改进镜像名称的解析
- 文档改进
os._exit
来自Unshare.unshare()- 在F4模式下禁用
FAKECHROOT_DISALLOW_ENV_CHANGES
udocker (1.1.4) - 2020-01-07
- 使用hub.docker.com作为默认注册表
- 使用v1和v2 API进行搜索
- 实现API /v2/search/repositories
- 调整搜索结果以适应屏幕大小
- 使用ps -s列出容器大小
- 使用ps -m列出容器执行模式
- 在Pn和Fn模式下添加对nameat()和statx()的支持
- 为Ubuntu18、Ubuntu19、Fedora29、Fedora30、Fedora31、CentOS8添加Fn库
- 为Alpine 3.8、3.9、3.10、3.11添加Fn库
- 添加对sha512哈希的支持
- 添加对不透明白名单的支持
- 添加搜索--list-tags以列出给定存储库的可用标签
- 添加CLI对格式为host/repository:tag的镜像名称的支持
- 通过--user=root在Sn执行模式中支持假根
- 改进加载/拉取镜像的验证
- 改进挂载点的处理
- 添加--containerauth以启用直接使用容器passwd和group
- 在 Singularity 中添加了对文件挂载绑定的支持
- 添加了
UDOCKER_USE_PROOT_EXECUTABLE
环境变量以选择 proot 位置 - 添加了
UDOCKER_USE_RUNC_EXECUTABLE
环境变量以选择 runc 位置 - 添加了
UDOCKER_USE_SINGULARITY_EXECUTABLE
环境变量以选择 singularity - 添加了
UDOCKER_DEFAULT_EXECUTION_MODE
环境变量以选择默认执行模式 - 在 runc 中添加了 R2 和 R3 执行模式以支持 PRoot 挂载执行
- 添加了 setup --purge 以清理挂载点和文件
- 添加了 setup --fixperms 以修复容器文件权限
- 添加了 run --env-file= 以加载包含环境变量的文件
- 改进 Singularity 和 runc 的文件和目录绑定支持
- 添加了 rename 命令以重命名容器
- 在不包含 shell 上下文的情况下创建进程
- 更安全地解析配置文件和删除目录
- 改进安装过程
- 改进 P1 模式下 SECCOMP 加速模式的修复
- 添加了加载和处理 OCI 格式容器镜像的功能
- ARM aarch64 上 udocker 的修复
- 修复 Sn 模式下处理 --dri 的问题:关闭 #241
- 改进容器和主机认证处理:解决 #239
- 修复 pull 操作中的认证和重定向:关闭 #225, #230
- 添加了加载 OCI 镜像的最小支持:关闭 #111
- 添加了对较新发行版的 Pn 支持:关闭 #192
- 改进 udockertools 的安装:关闭 #220, #228
- 添加 --env-file= 以从文件读取环境变量:关闭 #212
- 为 pypy 准备:关闭 #211
- 修复容器镜像验证问题:关闭 #209
- 修复处理命令行参数中 "-" 的命令行处理:关闭 #202
- 修复提取文件时的文件保护问题,使文件可写:关闭 #202, #206
- 修复具有非整数的内核版本比较:关闭 #183
- 支持 V2 架构的 1 和 2:关闭 #218, #225
- 进一步改进 Fn 模式中的路径名转换:关闭 #160
- 实现以 Docker 格式保存镜像:关闭 #74
- 容器中 useradd 和 groupadd 不工作:关闭 #141
- 修复导出到 stdin 时的返回码:关闭 #202
udocker (1.1.3) - 2018-11-01
- 支持 Ubuntu 上的 nvidia 驱动程序:关闭 #162
- 安装改进:关闭 #166
- 修复 Fn 模式下符号链接转换的问题:解决 #160
udocker (1.1.2) - 2018-10-29
- 改进命令行中引号的解析:关闭 #98
- 修复版本命令以退出 0:关闭 #107
- 在 Pn 模式下 proot 中添加 kill-on-exit
- 改进 udocker 工具的下载
- 处理拉取时的认证头:关闭 #110
- 处理拉取时的重定向
- 修复注册表表
- 支持搜索 quay.io
- 修复不使用标准 Docker 注册表时的认证头
- 在镜像名称上添加注册表检测
- 添加 --version 选项
- 强制将 python2 作为解释器:关闭 #131
- 修复元数据中卷的处理
- 处理空元数据
- 修复 http 代理功能:关闭 #115
- 在 images 命令中忽略 --no-trunc 和 --all
- 在清单中实现层的验证
- 添加 --nvidia 以支持 GPU 和相关驱动程序
- 将下载消息发送到 stderr
- 启用覆盖 curl 可执行文件
- 修复 CentOS 6 上的构建问题:关闭 #157
- 在 runC 没有 tty 时的上游限制缓解:关闭 #132
- 修复容器中具有符号链接的可执行文件检测:关闭 #118
- runC 更新到 v1.0.0-rc5
- Fn 模式中对 Alpine 的实验性支持
- 改进 Fn 模式中挂载目录的路径名转换:解决 #160
udocker (1.1.1) - 2017-11-24
- 使用 singularity 的新执行引擎
- 更新文档,包含 OpenMPI 信息和示例
- 添加额外的单元测试
- 将消息重定向到 stderr
- 改进命令行中引号的解析:关闭 #87
- 允许覆盖 HOME 环境变量
- 允许在容器级别覆盖 libfakechroot.so
- 从容器信息中自动选择 libfakechroot.so
- 改进自动安装
- 在远程主机中启用Fn模式下的重置前缀路径
- 当主机/tmp是一个卷时,在Fn模式下不要设置
AF_UNIX_PATH
- 以docker和udocker格式导出容器
- 导入docker和udocker格式的容器
- 从stdin和stdout加载、导入和导出
- 克隆现有容器
- 支持执行模式Pn中的TCP/IP端口重映射
- 修复运行基本名失败的问题:关闭#89
- 允许以root权限运行:关闭#91
udocker (1.1.0) - 2017-09-30
- 支持类似docker以注册表前缀的镜像名称
- 添加执行引擎选择逻辑
- 添加基于共享库拦截的fr执行引擎
- 添加基于无根命名空间的rc执行引擎
- 改进非ext文件系统上的proot临时文件清理
- 改进在Docker存储库上搜索返回空的结果
- 改进runC的可移植性
- 添加环境变量
UDOCKER_KEYSTORE
:关闭#75 - 当使用
UDOCKER_KEYSTORE
时防止创建.udocker:关闭#75
udocker (1.0.4) - 2017-09-26
- 文档修复
udocker (1.0.3) - 2017-03-30
- 支持在新元数据结构中导入Docker容器
- 改进命令行解析
- 改进临时文件处理和删除
- 支持未来提供的附加执行引擎
- 改进入口点和cmd元数据的解析:关闭#53
- 增加名称别名长度:关闭#52
- 添加支持更改目录到卷目录:关闭#51
- 修复容器导入时删除文件的问题:关闭#50
- 修复将主机环境变量导出到容器中:关闭#48
- 将导入tarball的误导行为从移动更改为复制:关闭#44
- 修复卷规范验证:关闭#43
udocker (1.0.2) - 2017-02-13
- 改进在/v2上认证失败时的下载
- 改进对具有递归符号链接的二进制文件的运行验证
- 改进内核≥4.8.0的加速seccomp:关闭#40
udocker (1.0.1) - 2017-01-31
- 小故障修复
- 可执行文件名从udocker.py更改为udocker
- 添加了对docker存储库登录的支持
- 添加了对私有存储库的支持
- 添加了对v2存储库目录的支持
- 添加了对sha256层的校验和验证
- 改进v1和v2存储库的下载处理
- 改进安装tarball结构
- 修复不安全的标志
- 处理在内核≥4.8.0上引入的seccomp更改
- 打包实用工具
- 改进详细级别、消息和输出:关闭#24、#23
- 完全实现对注册表选择的支撑 --registry参数:关闭#29
- 提供对私有存储库的支持,例如gitlab存储库:关闭#30
- 提供--insecure命令行参数以进行SSL请求:关闭#31
udocker (1.0.0) - 2016-06-06
- 初始版本
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
构建版本
udocker-1.3.17.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f7f4d0cbd8b4efc93584629435808b95fc46c3c536839e3b773873d23a9f2f59 |
|
MD5 | 58948e90d6baa5981dabb077602dacd2 |
|
BLAKE2b-256 | b59ae0995eeb0195b31befba697bf40659e2c0b9106fd80e3d7eecc50a96cbb7 |
udocker-1.3.17-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fd6589de0f3af7c1cd6a29554f2c00f2ef1fbd91da184ca30f8cea1eb42bcd2b |
|
MD5 | c9c5508adfd1402e2ab916837b6cef55 |
|
BLAKE2b-256 | 55d6caafad263b0e2375c2a8c586ac8b91fb7d3e363e6d1ab1e35a365d684254 |