Jenkins Docker容器无法访问docker.sock

我使用docker-compose和以下配置部署了标准的Jenkins Docker映像:

deployer:

image: jenkins

volumes:

- "/mnt/jenkins:/var/jenkins_home"

- "/var/run/docker.sock:/var/run/docker.sock"

ports:

- "2375:2375"

- "8080:8080"

- "50000:50000"

在阅读了许多SO问题之后,我测试了将Root添加到docker用户组,gpasswd -a ${USER}

docker并验证Container中的用户是Root with docker exec jenkins_deployer echo ${USER}

当我尝试使用“ Docker URL = unix:///var/run/docker.sock”在Jenkins

UI中添加Docker访问时,出现错误消息“

**org.newsclub.net.unix.AFUNIXSocketException:权限被拒绝(套接字: /run/docker.sock)** “

如何让Jenkins访问docker.sock以自动部署Docker容器?

回答:

我知道我迟到了两年,但遇到了同样的问题,有了这种解决方案可以节省几个小时的工作。

因此,我需要部署一个自动部署Docker容器的Jenkins容器。这是我用来构建和运行的文件:

Docker文件

FROM jenkins/jenkins:latest

USER root

RUN apt-get update -qq \

&& apt-get install -qqy apt-transport-https ca-certificates curl gnupg2 software-properties-common

RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -

RUN add-apt-repository \

"deb [arch=amd64] https://download.docker.com/linux/debian \

$(lsb_release -cs) \

stable"

RUN apt-get update -qq \

&& apt-get install docker-ce=17.12.1~ce-0~debian -y

RUN usermod -aG docker jenkins

docker-compose.yml

version: '3'

services:

jenkins:

container_name: 'jenkins-container'

privileged: true

build: .

ports:

- '8080:8080'

- '50000:50000'

volumes:

- jenkins-data:/var/jenkins_home

restart: unless-stopped

volumes:

jenkins-data:

然后,在这些文件所在的文件夹中,运行以下命令:

docker-compose up

容器启动后,使用它在内部启动Docker:

docker exec -it --user root <CONTAINER_ID>

service docker start

和瞧!可能会有一些更优化的解决方案,但是现在对我来说很棒。

现在<YOUR_IP>:8080,您可以在浏览器中访问以访问可以运行Docker容器的全新Jenkins。

以上是 Jenkins Docker容器无法访问docker.sock 的全部内容, 来源链接: utcz.com/qa/403024.html

回到顶部