Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在没有root访问权限的服务器上安装Docker二进制文件_Docker - Fatal编程技术网

在没有root访问权限的服务器上安装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]设置守护程序根传播时出错

我有一个提供程序提供的服务器,没有任何根访问权限。无法在/etc/或/var/lib/docker中编写脚本。未安装Docker。我的想法是在目录中安装并运行docker二进制文件。我将使用shell脚本安装docker。脚本应该能够从任何目录启动,而无需根访问权限

当脚本启动时,
/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快照
(请参阅,其中Docker图形驱动程序插件使管理员能够使用外部/进程外图形驱动程序与Docker引擎一起使用。
这是使用内置存储驱动程序(如aufs/overlay/devicemapper/btrfs)的替代方法。)

  • cGroup(包括docker top)和AppArmor目前处于禁用状态。
    将来,当在主机上配置委派权限时,cgroup将可选地可用
  • 目前不支持检查点
  • 也可以在无根/有根
    dockerd
    中运行无根
    dockerd
    ,但未经过完全测试
文档现在位于:

请注意以下要求:

  • 主机上需要安装
    newuidmap
    newgidmap

    这些命令由大多数发行版上的
    uidmap
    包提供

  • /etc/subuid
    /etc/subgid
    应包含
    =65536
    子ID。
    e、 g.
    企鹅:231072:65536

即:

(v0.3+)或需要安装。
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`