在没有root访问权限的服务器上安装Docker二进制文件
我有一个提供程序提供的服务器,没有任何根访问权限。无法在/etc/或/var/lib/docker中编写脚本。未安装Docker。我的想法是在目录中安装并运行docker二进制文件。我将使用shell脚本安装docker。脚本应该能够从任何目录启动,而无需根访问权限 当脚本启动时,在没有root访问权限的服务器上安装Docker二进制文件,docker,Docker,我有一个提供程序提供的服务器,没有任何根访问权限。无法在/etc/或/var/lib/docker中编写脚本。未安装Docker。我的想法是在目录中安装并运行docker二进制文件。我将使用shell脚本安装docker。脚本应该能够从任何目录启动,而无需根访问权限 当脚本启动时,/docker/dockerd--data root=docker/var/lib/docker我收到这个错误消息 警告[2018-11-17T18:26:19.492488618+01:00]设置守护程序根传播时出错
/docker/dockerd--data root=docker/var/lib/docker
我收到这个错误消息
警告[2018-11-17T18:26:19.492488618+01:00]设置守护程序根传播时出错,这通常不是关键问题,但可能会导致某些功能不起作用或退回到不太理想的行为dir=docker/var/lib/docker Error=“获取守护程序根的父装载时出错:open/proc/self/mountinfo:权限被拒绝”
启动守护程序时出错:open/var/run/docker.pid:权限被拒绝
dockerd有很多参数。这里是pidfile:-p|**-pidfile*[=/var/run/docker.pid]
谢谢你的帮助
#!/bin/bash
DOCKER_RELEASE='docker-18.06.1-ce.tgz'
wget https://download.docker.com/linux/static/stable/x86_64/$DOCKER_RELEASE
tar xzvf $DOCKER_RELEASE
rm $DOCKER_RELEASE
./docker/dockerd --data-root=docker/var/lib/docker
正如今天(2019年2月4日)宣布的:
最后,现在可以作为非特权用户运行上游dockerd
见:
允许在非特权用户命名空间中运行dockerd(无根模式)。关闭,于2018年6月开放 除newuidmap和newgidmap外,不需要SETUID/SETCAP二进制文件 我是如何做到的: 通过使用用户名称空间(7)、装载名称空间(7)、网络名称空间(7)和 警告,有以下限制: 限制:
- 仅支持
。vfs graphdriver
然而,在Ubuntu和一些发行版上,overlay2和overlay也受支持。
从Linux4.18开始,我们还可以实现FUSE快照
这是使用内置存储驱动程序(如aufs/overlay/devicemapper/btrfs)的替代方法。)
- cGroup(包括docker top)和AppArmor目前处于禁用状态。
将来,当在主机上配置委派权限时,cgroup将可选地可用 - 目前不支持检查点
- 也可以在无根/有根
中运行无根dockerd
,但未经过完全测试dockerd
- 主机上需要安装
和newuidmap
。newgidmap
这些命令由大多数发行版上的
包提供uidmap
和/etc/subuid
应包含/etc/subgid
子ID。=65536
e、 g.企鹅:231072:65536
slirp4netns
是最佳性能的首选
您必须修改脚本:
您需要运行dockerd rootless.sh
而不是dockerd
$ dockerd-rootless.sh --experimental"
2019年5月更新:是否使用“”探索此无根选项: 用户名称空间映射用户ID的范围,以便内部名称空间中的根用户映射到父名称空间中的非特权范围。
用户名称空间中的一个新进程还将获取一整套进程功能 无根模式的工作方式与此类似,只是我们先创建一个用户名称空间,然后启动已在重新映射的名称空间中的守护进程。守护进程和容器都将使用与主机名称空间不同的相同用户名称空间 尽管Linux允许在没有扩展权限的情况下创建用户名称空间,但这些名称空间仅映射单个用户,因此不能与许多现有容器一起使用。
为了克服这个问题,无根模式依赖于
uidmap
包,该包可以为我们重新映射用户。uidmap
包中的二进制文件使用setuid
位(或文件功能),因此始终在内部以root用户身份运行
为了简化不同名称空间的启动和与uidmap的集成,Akihiro创建了一个名为的项目Rootlesskit还负责为无根容器建立网络。默认情况下,无根docker使用基于项目的网络,该项目也用于docker桌面产品中的网络。
或者,用户可以安装并使用它 再次: 注意事项: 在无根模式下不起作用的示例有
cgroup
资源控制、apparmor
安全配置文件、检查点/恢复、覆盖网络等从容器公开端口当前需要手动
socat
helper进程
只有基于Ubuntu的发行版支持无根模式下的覆盖文件系统。对于其他系统,无根模式使用vfs存储驱动程序,这在许多文件系统中是次优的,不建议用于生产工作负载
我很感激这次行动的进展,但这里有一个简短的回答。如果文件/etc/subuid和/etc/subgid不满足先决条件设置(请参见下面的代码),则您将被迫让具有root访问权限的人参与进来
# rightmost values returned from these commands should be >= 65536
# if not, you're out of luck if admin doesn't like you.
cat /etc/subgid | grep `whoami`
cat /etc/subuid | grep `whoami`
您不能在没有root访问权限的情况下使用docker,因为它绑定到UNIX套接字,默认情况下它位于root下。查看更多信息info@scipsycho注意:您实际上可以使用docker而无需root访问。。。从几天前开始:见。
# rightmost values returned from these commands should be >= 65536
# if not, you're out of luck if admin doesn't like you.
cat /etc/subgid | grep `whoami`
cat /etc/subuid | grep `whoami`