作为Jenkins docker 形象的一部分,
应该安装docker client(only),
可以与安装在基础EC2实例上的docker守护进程进行通讯。
UNIX套接字,我的意思是socket(AF_UNIX,,)
背景
按照说明,给定here,
我认为没有必要使用ink jenkins镜像安装docker daemon,
因为作者正在使用UNIX套接字与EC2实例中运行的基础docker守护程序进行对话,如here所示。
我的理解是,仅在jenkins镜像中安装docker客户端安装程序,就可以使用UNIX socket(/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
最佳答案
要在Jenkins中使用Docker,Jenkins必须有权访问docker.sock
。
您在这里建议的是通过在jenkins容器内安装docker的docker in docker方法,但实际上这不是必需的。您只需要一个有效的docker守护程序,因此,通常的方法是将/var/run/docker.sock
从主机映射到容器。
看看这个惊人的帖子https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/
关于docker - Docker客户端(容器内)可以使用UNIX套接字与EC2上的Docker守护进程进行通信吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58652650/