当前位置: 首页 > 知识库问答 >
问题:

Jenkins Docker容器无法访问Docker。短袜

满勇军
2023-03-14

我使用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添加到使用gPasswd-a${USER}docker的docker用户组中,并验证了容器中的用户是使用docker execjenkins_deployerecho${USER}的Root。

当我尝试在Jenkins UI中使用Docker URL=unix:///var/run/docker.sock添加Docker访问时,我会收到错误消息org.newsclub.net.unix.AFuniXSocketExc0019:权限被拒绝(套接字: /run/docker.sock)

我怎样才能让詹金斯接触docker。sock自动部署Docker容器?

共有1个答案

柴昆杰
2023-03-14

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

所以我需要部署一个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撰写。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 inside:

docker exec -it --user root <CONTAINER_ID>

service docker start

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

您现在可以访问

 类似资料:
  • 问题内容: 我使用docker-compose和以下配置部署了标准的Jenkins Docker映像: 在阅读了许多SO问题之后,我测试了将Root添加到docker用户组,并验证Container中的用户是Root with 。 当我尝试使用“ Docker URL = unix:///var/run/docker.sock”在Jenkins UI中添加Docker访问时,出现错误消息“ **o

  • 我可以对Docker API进行cUrl调用,但是如果我从容器(docker-comals)运行相同的脚本,我就无法到达任何API终结点。 我的请求如下: 原因可能是使用了localhost,但我现在还找不到解决方案。有什么建议吗? 编辑:下面是我正在使用的堆栈(Api平台)的简要摘要https://api-platform.com/).每个容器都连接到“api_默认”网桥网络: 基于php=Sy

  • 我有一个关于这个问题的问题https://hub.docker.com/r/jupyter/scipy-notebook.我正在尝试使用docker compose运行此图像: 组成: Dockerfile 我用手够不着它http://locahost:8888 .... 网址。我使用Windows10作为主机,并尝试从这个docker compose和这些工作中访问其他服务。

  • tl;如果在Docker容器中运行,一个RestController正确回答,另一个则不正确。 该服务有两个API 和。 它们都是通过docker compose运行的。 返回。 返回一个空的200响应。正如预期的那样。 应该返回一个200响应和一个每次调用API时都会增加的数字。可悲的是,事实并非如此。 在本地运行该服务可以提供预期的结果。 maven spotify插件用于从以下创建图像。 我

  • 我有一个Django应用程序的简单代码构建项目,我想在docker容器中启动一个Postgres数据库进行测试。 命令是: 在我的本地机器上,一切都工作得很好,但在AWS CodeBuild中,我收到了错误: psql:错误:无法连接到服务器:无法连接到服务器:没有这样的文件或目录服务器是否在本地运行并接受Unix域套接字"/var/run/postgresql/. s. PGSQL.5432"上

  • 我有两个Docker容器在同一个网络中运行,我希望其中一个通过spring Webclient调用另一个。我确信他们都在同一个网络中- “finishConnect(…)失败:连接被拒绝:附件加载程序秒/172.21.0.5:80;嵌套异常为io。内蒂。频道AbstractChannel$AnnotatedConnect异常:finishConnect(…)失败:连接被拒绝:附件加载程序秒/172