docker jenkins
sudo usermod -a -G docker jenkins
Docker Jenkins. , Jenkinsfile pipeline{agent{dockerfile pipeline{agent{image:
pipeline {
agent {
dockerfile {
filename 'Dockerfile.jenkinsAgent'
}
}
stages {
, docker run, .
- () Docker.
- Docker, Docker-in-Docker, .
- , . ,
docker run ( sudo).
Docker
Docker- Docker, Docker Dockerfile:
FROM debian:stretch-backports
RUN apt-get -y update && \
apt-get -y install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release \
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 -y update && \
apt-get -y install \
docker-ce \
docker-ce-cli \
containerd.io
...
Docker
, Jenkins Docker, Docker Docker, . , Jenkins Docker :
pipeline {
agent {
dockerfile {
filename 'Dockerfile.jenkinsAgent'
args '-v /var/run/docker.sock:/var/run/docker.sock'
}
}
UID GID
. . , , - UID GID Docker ( root.docker). , ( useradd... jenkins groupadd... docker Jenkins Docker). jenkins docker
args '-v /var/run/docker.sock:/var/run/docker.sock -u jenkins:docker'
Docker jenkins docker , Docker, , jenkins, , , UID GID , , GID docker
, docker build Dockerfile , Docker:
pipeline {
agent {
dockerfile {
filename 'Dockerfile.jenkinsAgent'
additionalBuildArgs '--build-arg JENKINSUID='id -u jenkins' --build-arg JENKINSGID='id -g jenkins' --build-arg DOCKERGID='stat -c %g /var/run/docker.sock''
args '-v /var/run/docker.sock:/var/run/docker.sock -u jenkins:docker'
}
}
id UID GID jenkins stat Docker.
Dockerfile , jenkins docker , groupadd, groupmod useradd:
FROM debian:stretch-backports
ARG JENKINSUID
ARG JENKINSGID
ARG DOCKERGID
...
RUN apt-get -y update && \
apt-get -y install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release \
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 -y update && \
apt-get -y install \
docker-ce \
docker-ce-cli \
containerd.io
...
RUN groupadd -g ${JENKINSGID} jenkins
RUN groupmod -g ${DOCKERGID} docker
RUN useradd -c "Jenkins user" -g ${JENKINSGID} -G ${DOCKERGID} -M -N -u ${JENKINSUID} jenkins