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第三方库


热门话题
java Google Billing Library:QueryPurchaseAsync:取消购买的订阅资源未返回   java转换列表mapsturct中的单个对象   java简单算法。我做不好   包含集合的@ManyToMany映射的java JPA2持久性   在Java中序列化和反序列化对象时发生BuffereImage错误   java使用ui:param传递值并在backingbean中访问它们   java从应用程序读取配置。yml至POJO列表地图   java中在while循环外部调用文件值   java如何与来自不同类的UI交互   java如何在jTable中显示2D数组?   在Java 8中,类为什么不从接口继承默认方法?   java类。getAnnotation和getAnnotations无法正常工作   java处理pagertabstrip上的触摸事件   java GWT和struts2异常   用Java解析HTTP查询字符串   java这段代码SQL注入安全吗?