我希望在docker容器中运行Jenkins实例。
我希望Jenkins本身能够启动docker容器作为从节点来运行测试。
似乎最好的方法是使用
docker run -v /var/run.docker.sock:/var/run/docker.sock -p 8080:8080 -ti my-jenkins-image
我使用的Dockerfile
是:
FROM jenkins
COPY plugins.txt /usr/share/jenkins/plugins.txt
RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt
USER root
RUN apt-get update && apt-get install -y docker.io
RUN usermod -aG docker jenkins
USER jenkins
如果我在正在运行的容器中启动一个bash会话并在我的镜像上运行docker info
,我会得到:
$ docker info
FATA[0000] Get http:///var/run/docker.sock/v1.18/info: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?
如果我以root身份运行bash会话
docker exec -u 0 -ti cocky_mccarthy bash
root@5dbd0efad2b0:/# docker info
Containers: 42
Images: 50
...
所以我猜测我要将Jenkins用户添加到的docker
组是内部docker的组,因此没有sudo
就无法读取套接字。这有点成问题,因为Jenkins docker插件等没有设置使用sudo
。
我如何挂载该套接字以便从镜像中使用而不需要sudo
?
docker exec -it -u root jenkins-docker chown jenkins /var/run/docker.sock
- Ivan Arackidocker
必须使用/usr/bin/docker:/usr/bin/docker
。 - Nairum-v /var/run.docker.sock:/var/run/docker.sock
有错误。应该是run.docker
而不是run/docker
。 - undefined