我想在 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
...
所以我猜想docker
我将 Jenkins 用户添加到的组是内部 docker 的组,因此如果没有sudo
. 这是一个问题,因为 Jenkins docker 插件等未设置为使用sudo
.
如何安装套接字以便可以从图像中使用它而不使用sudo
?