userdocker允许管理员向用户授予受限制的docker命令访问权限。

userdocker的Python项目详细描述


用户docker

userdocker是一个包装器,允许管理员授予受限制的docker 命令行访问用户。

注意

用户docker目前处于beta状态。尽管我们一直在努力测试 在我们的本地基础设施上,进一步的测试、审查和反馈是 非常欢迎。小心使用并查看github repo是否存在问题和 新版本!

用户docker的目标是科学的高性能计算和集群 设置,因为它们存在于大多数大学或研究小组。通常,这样 科学计算具有难以满足的特殊依赖性 在Linux发行版中(并让管理员们疯狂)。

理论上,这些用例可以从Docker中获益,因为Docker允许 用户可以很容易地自己定义环境并基本上不需要 负面的性能影响,因为它们直接在主机的内核上运行。在 然而,给予Docker命令行对用户的有效访问使得 它们在主机上的根等价物(容器中的根、卷装载…),使 这对集群计算来说是一种阻碍。

userdocker通过包装docker命令并使 用户可使用的安全部件。管理员可以决定他们认为什么是安全的 (有理智的违约)。userdocker命令主要遵循docker 命令行语法,因此用户可以将其用作 Docker命令。

反馈/错误报告/贡献欢迎:

https://github.com/joernhees/userdocker

示例用法:

# command line help (including subcommands the user is allowed to execute)
sudo userdocker -h

# (docker images) list images (and useful tree visualization)
sudo userdocker images
sudo userdocker dockviz

# (docker run) run a debian image with user (read-only) mounted home
sudo userdocker run -it --rm -v $HOME:$HOME:ro debian bash

# (docker attach) re-attach to own container after connection loss
sudo userdocker attach 438c7648e76b

# (docker ps) list running containers
sudo userdocker ps

# (docker pull / load) pull or load
sudo userdocker pull debian
sudo userdocker load < image.tar.gz

# (nvidia-docker) extensions for nvidia GPU support
alias nvidia-userdocker='userdocker --executor=nvidia-docker'NV_GPU=1,3,7 nvidia-userdocker run -it --rm nvcr.io/nvidia/tensorflow
userdocker ps --gpu-used
userdocker ps --gpu-free

特点:

  • 类似于docker ...的命令行接口调用userdocker ...

  • 支持多个docker命令/插件(docker、nvidia docker)

  • /etc/userdocker/中管理员的细粒度配置允许:

    • restrict runnable images if desired (allows admin reviews)
    • restrict run to locally available images
    • restrict available mount points (or enforce them, or default mount)
    • probe mounts (to make sure nfs automounts don’t make docker sad)
    • enforce non-root user in container (same uid:gid as on host)
    • enforce dropping caps
    • enforce environment vars
    • enforce docker args
    • restrict port publishing
    • explicitly white-list available args to user
    • restrict allowed GPU access / reservations via ^{tt4}$
  • 单个组、gid、用户、uid的系统范围配置+覆盖。

  • 易于扩展,用于进一步的子命令和参数。

安装:

用户docker的安装分为三个步骤:

一。安装包:

首先确保Docker已安装:

sudo docker version

之后,as userdocker用python3编写,并作为python包提供:

sudo pip3 install userdocker

这将为您提供一个userdocker命令,您可以使用该命令进行测试:

userdocker -h

以上是最好的安装方式。

或者,您可以克隆此repo并执行:

sudo python3 setup.py install

2.配置:

将默认配置复制到/etc/userdocker/config.py,然后编辑文件。 配置包含大量的注释和解释,帮助您正确地 为你的场景做决定。

sudo cp /etc/userdocker/default.py /etc/userdocker/config.py

三。允许用户运行sudo userdocker

现在应该允许有问题的用户运行sudo userdocker。这是 基本上是通过添加/etc/sudoers.d/userdocker文件来完成的。如果你想的话 将此权限授予组users中的所有用户,添加以下内容 两行:

Defaults env_keep += "NV_GPU"
%users ALL=(root) NOPASSWD: /usr/local/bin/userdocker

如果您希望允许用户使用nvidia,强烈建议使用第一个 通过NVIDIA Docker从Docker容器中获得的GPU(请参阅配置中的执行器)。 如果没有它,它们就不能将nv_gpu环境变量传递给userdocker (因此nvidia docker)命令选择所需的GPU。

常见问题解答:

为什么是sudo?

因为它支持日志记录,而且通常比 选择。例如,如果您只想使userdocker在上可用 集群中的某些节点,可以使用主机列表字段:

%users node1,node2,node4=(root) /usr/local/bin/userdocker

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓 studio安装的java Unity本机广告   java如何将映射转换为对象   java我试图使用rest控制器从h2数据库中检索记录,但它说没有数据集   反思为什么会抛出java。lang.InstanceException?   在opensuse中找不到Java/javac   java为Android上的谷歌地图添加了5900多个标记。如何有效地做   java如何在if语句中使用循环   java如何在JPA(Hibernate)中映射一对多关系和复合主键?   如何在Java中读取和写入外部进程?   Java线程。睡眠时间最短   java使用EclipseGradle插件如何离线托管和使用依赖项(库jar文件)   java为什么虚拟引用在排队时没有被清除?   java无法理解如何创建用于响铃报警的取消按钮   java解析不应通过注入容器错误发生   java Toast或ProgressDialog不显示   java在自定义对象上使用优先级队列的更好方法   java格式的。wmv文件。(或者任何视频文件都很好)   从页面调用另一个侦听器后,不会调用java JSF<f:ajax>侦听器   java注释ConfigApplicationContext不能多次刷新有什么原因吗?