访问jenkins奴隶容器内的docker

我的问题基本上是容器中的Access Docker套接字和从(jenkins)docker 容器中 访问docker主机的组合

我的目标

运行Jenkins完全docker化,包括dynamic奴隶,并能够在奴隶内创builddocker集装箱。

除了最后一部分,如果Unix docker-sock正确地暴露给Jenkins主,那么所有东西都已经在工作,这要归功于https://github.com/maxfields2000/dockerjenkins_tutorial 。

问题

与dynamicconfiguration的从站不同,主站通过docker-compose启动,因此可以正确访问UNIX套接字。

对于dynamic生成的从站,这种方法不起作用。 我试图转发访问docker像

VOLUME /var/run/docker.sock VOLUME /var/lib/docker 

在build设的形象。 不幸的是到目前为止,当我尝试访问docker.sock中的Permission denied (socket: /run/docker.sock)时,我得到了一个Permission denied (socket: /run/docker.sock)奇怪的是是:从机中的用户是root。

那为什么我不能访问docker.sock ? 或者我怎么能在--privileged标志烧,这样的权限被拒绝的问题会消失?

随着docker1.10一个新的用户命名空间被引入,因此共享docker.sock是不够的,因为容器内的根不再是在主机上的根。 我最近和jenkins一起玩过容器,我想用主机docker引擎来构build容器。 我做的步骤是:

查找docker组的组ID:

 $ id ..... 999(docker) 

用两卷运行jenkins容器 – 一个包含docker客户端可执行文件,另一个共享docker unix套接字。 请注意我如何使用--group-add将容器用户--group-add到泊坞窗组,以允许访问:

 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 

经过testing,发现它的工作方式是:

 docker exec -ti jenkins bash ./docker ps 

在这里查看更多关于其他群体

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