作为Jenkins码头工人形象的一部分,
应该安装docker client(仅)
可以与安装在基础EC2实例上的docker守护进程进行通讯。
UNIX套接字,我的意思是socket(AF_UNIX,,)
根据说明,给定here
我认为没有必要使用ink jenkins映像安装docker daemon,
因为作者正在使用UNIX套接字与EC2实例中运行的基础docker守护进程进行对话,如图here所示。
我的理解是,仅在jenkins映像中安装docker客户端安装程序,就可以使用UNIX套接字(/var/run/docker.sock
)与EC2实例上运行的docker守护进程进行对话
1)
在jenkins映像中运行的docker客户端可以与在基础EC2实例中运行的docker守护进程通信吗?具有以下映射...
volumes:
- /var/run/docker.sock:/var/run/docker.sock
2)
如何仅在下面的jenkins映像中安装docker客户端?
FROM jenkins:1.642.1
# Suppress apt installation warnings
ENV DEBIAN_FRONTEND=noninteractive
# Official Jenkins image does not include sudo, change to root user
USER root
# Used to set the docker group ID
# Set to 497 by default, which is the groupID used by AWS Linux ECS instance
ARG DOCKER_GID=497
# Create Docker Group with GID
# Set default value of 497 if DOCKER_GID set to blank string by Docker compose
RUN groupadd -g ${DOCKER_GID:-497} docker
答案 0 :(得分:1)
要在Jenkins中使用Docker,Jenkins必须有权访问docker.sock
。
您在这里建议的是通过在jenkins容器内安装docker的docker方法中的docker,但实际上这不是必需的。您只需要一个有效的docker守护程序,因此,通常的方法是将/var/run/docker.sock
从主机映射到容器。
看看这篇精彩的帖子https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/
答案 1 :(得分:0)
您需要在docker
映像中安装jenkins
,然后将/var/run/docker.sock
绑定安装,以便按照Jérôme Petazzoni's blog post on the subject中的说明运行侧面汽车集装箱。这是我的jenkins
Dockerfile
:
FROM jenkins/jenkins:lts
USER root
RUN apt-get update && \
apt-get install -y \
maven \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
lsb-release \
software-properties-common
RUN curl -fsSL https://download.docker.com/linux/ubuntu/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 && \
apt-get install -y \
docker-ce \
docker-ce-cli \
containerd.io
RUN usermod -a -G docker jenkins
COPY plugins.txt /usr/share/jenkins/plugins.txt
RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/plugins.txt
USER jenkins
WORKDIR /var/jenkins_home
注意:您可以按照here的说明,使用plugins.sh
安装插件。
构建jenkins
图像,即:docker build --rm -t so:58652650 .
运行容器安装/var/run/docker.sock
,即:docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock --entrypoint bash so:58652650