Jenkins Docker Container无法访问docker.sock

时间:2017-01-26 14:17:42

标签: jenkins docker debian docker-compose

我使用docker-compose和这个配置部署了标准的Jenkins Docker镜像:

gpasswd -a ${USER} docker

在阅读了大量SO问题之后,我测试了将Root添加到具有docker exec jenkins_deployer echo ${USER}的docker用户组,并验证了Container内的用户是否为 let somespace: CGFloat = 10 self.economicsButton.setImage(UIImage(named: "cross"), forState: UIControlState.Normal) self.economicsButton.imageEdgeInsets = UIEdgeInsetsMake(0, self.economicsButton.frame.size.width - somespace , 0, 0) print(self.economicsButton.imageView?.frame) self.economicsButton.titleEdgeInsets = UIEdgeInsetsMake(0,(self.economicsButton.imageView?.frame.width)! + somespace, 0, 10 ) 的根。

当我尝试使用“Docker URL = unix:///var/run/docker.sock”在Jenkins UI中添加Docker访问时,我收到错误消息 “ org.newsclub.net.unix.AFUNIXSocketException:Permission denied(socket:/run/docker.sock)

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

1 个答案:

答案 0 :(得分:0)

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

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

Dockerfile

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。