userdocker允许管理员向用户授予受限制的docker命令访问权限。
userdocker的Python项目详细描述
用户docker
userdocker是一个包装器,允许管理员授予受限制的docker 命令行访问用户。
注意
用户docker目前处于beta状态。尽管我们一直在努力测试 在我们的本地基础设施上,进一步的测试、审查和反馈是 非常欢迎。小心使用并查看github repo是否存在问题和 新版本!
用户docker的目标是科学的高性能计算和集群 设置,因为它们存在于大多数大学或研究小组。通常,这样 科学计算具有难以满足的特殊依赖性 在Linux发行版中(并让管理员们疯狂)。
理论上,这些用例可以从Docker中获益,因为Docker允许 用户可以很容易地自己定义环境并基本上不需要 负面的性能影响,因为它们直接在主机的内核上运行。在 然而,给予Docker命令行对用户的有效访问使得 它们在主机上的根等价物(容器中的根、卷装载…),使 这对集群计算来说是一种阻碍。
userdocker通过包装docker命令并使 用户可使用的安全部件。管理员可以决定他们认为什么是安全的 (有理智的违约)。userdocker命令主要遵循docker 命令行语法,因此用户可以将其用作 Docker命令。
反馈/错误报告/贡献欢迎:
示例用法:
# 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