Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
Sockets 访问jenkins slave上容器内的docker_Sockets_Jenkins_Docker_Jenkins Slave - Fatal编程技术网

Sockets 访问jenkins slave上容器内的docker

Sockets 访问jenkins slave上容器内的docker,sockets,jenkins,docker,jenkins-slave,Sockets,Jenkins,Docker,Jenkins Slave,我的问题基本上是和的结合 我的目标 运行Jenkins完全停靠,包括动态从站,并能够在从站中创建停靠容器 除了最后一部分外,由于Unix docker sock正确地暴露给Jenkins master,所有工作都已经正常进行 问题 与动态配置的从属服务器不同,主服务器通过docker compose启动,因此可以正确访问UNIX套接字 对于动态生成的从属对象,此方法不起作用。 我试着把入口转发给docker VOLUME /var/run/docker.sock VOLUME /var/lib/

我的问题基本上是和的结合

我的目标 运行Jenkins完全停靠,包括动态从站,并能够在从站中创建停靠容器

除了最后一部分外,由于Unix docker sock正确地暴露给Jenkins master,所有工作都已经正常进行

问题 与动态配置的从属服务器不同,主服务器通过docker compose启动,因此可以正确访问UNIX套接字

对于动态生成的从属对象,此方法不起作用。 我试着把入口转发给docker

VOLUME /var/run/docker.sock
VOLUME /var/lib/docker
在建立形象的过程中。不幸的是,到目前为止,我在尝试访问从机中的
docker.sock
时,权限被拒绝(socket:/run/docker.sock),该从机创建如下: 奇怪的是:slave中的用户是root


那么为什么我不能访问
docker.sock
?或者,我如何在
--privileged
标志中烧掉权限,以消除拒绝权限的问题?

docker 1.10引入了一个新的用户名称空间,因此共享docker.sock是不够的,因为容器中的根不再是主机上的根。 我最近也使用了Jenkins容器,我想使用主机docker引擎构建容器。 我采取的步骤是:

查找docker组的组id:

$ id
..... 999(docker)
使用两个卷运行jenkins容器-一个包含docker客户端可执行文件,另一个共享docker unix套接字。注意我如何使用
--group add
将容器用户添加到docker组,以允许访问:

docker run --name jenkins -tid -p 8080:8080 --group-add=999 -v /path-to-my-docker-client:/home/jenkins/docker -v /var/run/docker.sock:/var/run/docker.sock jenkins
经过测试,发现它可以独立工作:

docker exec -ti jenkins bash
./docker ps
请参阅有关其他组的更多信息


另一种方法是使用
--privileged
标志,而不是--group add,但是如果可能的话最好避免使用它

docker 1.10引入了一个新的用户名称空间,因此共享docker.sock是不够的,因为容器中的根不再是主机上的根。 我最近也使用了Jenkins容器,我想使用主机docker引擎构建容器。 我采取的步骤是:

查找docker组的组id:

$ id
..... 999(docker)
使用两个卷运行jenkins容器-一个包含docker客户端可执行文件,另一个共享docker unix套接字。注意我如何使用
--group add
将容器用户添加到docker组,以允许访问:

docker run --name jenkins -tid -p 8080:8080 --group-add=999 -v /path-to-my-docker-client:/home/jenkins/docker -v /var/run/docker.sock:/var/run/docker.sock jenkins
经过测试,发现它可以独立工作:

docker exec -ti jenkins bash
./docker ps
请参阅有关其他组的更多信息


另一种方法是使用
--privileged
标志,而不是--group add,但是最好尽可能避免使用它

是否可以将您建议的所有选项烘焙到图像中?因为Jenkins产卵奴隶不会导致执行您描述的选项。现在,可以通过--privileged。我终于找到了这样做的选项。是否可以将您建议的所有选项烘焙到图像中?因为Jenkins产卵奴隶不会导致执行您描述的选项。现在,可以通过--privileged。我终于找到了这样做的选择。