【发布时间】:2017-06-12 01:04:33
【问题描述】:
我使用 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 问题后,我测试了使用 gpasswd -a ${USER} docker 将 Root 添加到 docker 用户组,并验证了容器内的用户是使用 docker exec jenkins_deployer echo ${USER} 的 Root。
当我尝试使用“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 容器?
【问题讨论】:
-
您的容器内是否安装了 docker?此外,您需要将 docker 套接字从您的主机系统共享/安装到您的 Jenkins 容器中。就我个人而言,我不喜欢 docker-in-docker 方法,因为它们感觉很 hacky……我更喜欢将我的 jenkins 主容器连接到安装了 docker 的从站,然后将所有 docker 任务委托给该从站。
-
我从内部的 Web GUI 安装了 Docker 插件,因此它应该具有与 Docker 套接字交互的所有依赖项(我猜?)您如何将 docker 任务委托给从站?我想在运行 Jenkins 容器的主机系统中部署一个新容器,因此必须在某处建立主机 Docker API 和触发部署的容器之间的连接。
-
对不起我的错误。没错,您已经安装了 docker 套接字并在容器内安装了 docker。我的从属用例更针对容器构建。也许权限错误与某些SELinux restrictions有关?
-
你有没有让它运行@trahloff?
-
@MaxSchindler 很遗憾没有
标签: jenkins docker debian docker-compose