我正在使用AWS EC2插件进行Jenkins生成任务时生成Jenkins从属。尝试在Docker容器中构建Docker时遇到权限问题。我查看了许多其他帖子,人们经常提供此作为答案:
问题是我无法重新启动,因为jenkins奴隶是使用该插件生成的,而且我不确定如何正确地重新启动它,以便它在重新启动时能够正确处理构建。同样,这意味着即使在容器中,也要在主机上运行重新启动,这听起来像是个坏主意。
我尝试过:
在dockerfile RUN adduser jenkins
sudo
中的sudo用户中添加jenkins,后跟RUN echo "jenkins ALL=NOPASSWD: ALL" >>
/etc/sudoers
更改docker套接字文件所有者RUN chown root:jenkins /var/run/docker.sock
更改docker套接字权限chmod 777 /var/run/docker.sock
使用newgrp
,因此我不必从容器外部重新启动Docker
基本上,如何避免不重新启动docker服务,同时还提供sudo权限以便在jenkins从属容器中构建dockerfile?或者,如果我仍然可以在仍使用EC2插件的情况下重新启动,该怎么办?
当前dockerfile:
FROM jenkins/jnlp-slave
USER root
RUN apt-get update && \
apt-get -y install apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common && \
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && \
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
$(lsb_release -cs) \
stable" && \
apt-get update && \
apt-get -y install docker-ce && \
apt-get -y install sudo
VOLUME /var/run/docker.sock
RUN adduser jenkins sudo
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers
RUN usermod -aG docker jenkins
RUN chmod 777 /var/run/docker.sock
RUN chown root:jenkins /var/run/docker.sock
USER jenkins
谢谢!
答案 0 :(得分:0)
我也遇到了这个问题,我必须按照以下步骤进行操作:
/var/run/docker.sock
最重要的部分是在容器内运行docker命令。有两种选择:
i。以root
用户身份运行containerUser。
如果您以root用户身份运行容器,这是最方便的步骤
ii。将jenkins用户添加到主机上的docker组中
usermod -a -G docker jenkins
获取docker组的gid并将其映射到容器内。将docker容器的gid更新为主机的gid。这样,您就不会出现permission denied
错误,也不需要做chown 777 /var/run/docker.sock