docker - 授予 jenkins 访问 unix:///var/run/docker.sock 的权限
问题描述
我已将 docker 插件安装到 jenkins 中,并且正在尝试配置 docker 云。
我的 jenkins 安装在 docker 容器内运行,我已经绑定到主机上的 docker 套接字,如下所示:
version: '3.3'
services:
jenkins:
container_name: jenkins
ports:
- '7345:8080'
- '50000:50000'
volumes:
- /docker/jenkins/data/jenkins_home:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
image: 'jenkins/jenkins:lts'
此方法使用 docker-ce-cli 可以正常工作。如果我安装 cli 并绑定到主机的套接字,那么它就可以工作。
但是设置詹金斯我收到一个错误:
在 jenkins 容器内,一切都在用户“jenkins”下运行,UID 为 1000。在我的主机上,UID 1000 是一个名为“ubuntu”的用户。
我已将此用户添加到 docker 组
usermod -aG docker ubuntu
并检查了套接字权限:
# ls -lisa /var/run/docker.sock
833 0 srw-rw---- 1 root docker 0 Jul 22 22:02 /var/run/docker.sock
但是詹金斯仍然抱怨它没有权限。
授予詹金斯访问此套接字的权限的正确方法是什么?
解决方案
其他线程中的任何自定义都不起作用,但我对其进行了一些调整,并使其与以下文件一起使用:
FROM jenkins/jenkins
USER 0
ARG DOCKERGID=998
# Docker
RUN apt-get update \
&& apt-get install software-properties-common apt-transport-https ca-certificates gnupg-agent dialog apt-utils -y \
&& curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - \
&& add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable" \
&& apt-get update \
&& apt-get install docker-ce-cli -y
# Setup users and groups
RUN addgroup --gid ${DOCKERGID} docker
RUN usermod -aG docker jenkins
USER 1000
推荐阅读
- python-3.x - 在python 3中从对象类型[]转换熊猫列
- android - 在 Retrofit 2 中调用 URL 时出现 HTTP 400 错误
- android - 无法在设备上应用更改:DEVICE####。错误是:无法读取未定义的属性“env”
- ios - 如何将结构或类对象附加到 SCNNode
- ruby-on-rails - Rails 5 尝试将空字符串保存为 nil
- angular - Angular 表单一次显示一条错误消息
- knockout.js - Dynamic Add New Row Using knockout js
- node.js - 在 NestJS 中为 Pug 设置“basedir”选项
- docker - 如何在 dockerfile 中使用 .ENV 文件中的变量?
- c - printf("%d","%u","%p",ptr,ptr,ptr) 和 printf("%d %u %p",ptr,ptr,ptr) 有什么区别?