当前位置: 首页 > 知识库问答 >
问题:

Docker客户端(容器内)可以使用UNIX套接字与EC2上的Docker守护进程通信吗?

邓元白
2023-03-14

作为Jenkins docker形象的一部分,

我应该安装docker客户端(仅限),

它可以与安装在底层EC2实例上的docker守护进程通信。

UNIX套接字,我是说套接字(AF_UNIX,,)

根据这里给出的指示,

我不认为有必要安装docker守护进程与ink jenkins图像,

因为作者正在使用UNIX套接字与运行在EC2实例中的底层docker守护进程进行对话,如下所示。

我的理解是,在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

共有2个答案

诸超
2023-03-14

您需要在jenkins映像中安装docker,然后绑定并装载/var/run/docker。sock,这样你就可以像杰罗姆·佩塔佐尼(Jérôme Petazzoni)关于这个主题的博客文章中所解释的那样运行侧车集装箱。这是我的jenkinsDockerfile

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

注意:您可以在构建期间使用插件安装插件。sh如下所述。

构建jenkins图像,即:docker构建--rm-tso:58652650

运行容器挂载/var/run/docker.sock即:docker run--rm-it-v /var/run/docker.sock:/var/run/docker.sock--entrypoint bash so: 58652650

卢景澄
2023-03-14

要在Jenkins中使用Docker,Jenkins必须有权访问Docker。sock

您在这里提出的是docker-in-docker方法,即在jenkins容器中安装docker,但实际上这并不是必需的。您只需要一个有效的docker守护程序,因此,通常的方法是映射/var/run/docker。从主机到容器的sock

看看这个惊人的帖子https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/

 类似资料:
  • 本文向大家介绍浅谈Docker 客户端和守护进程,包括了浅谈Docker 客户端和守护进程的使用技巧和注意事项,需要的朋友参考一下 Docker 守护进程 sudo docker daemon & 即可 启动docker 守护进程 sudo docker daemon –help 查看帮助 其中     --label  设置标签         sudo docker info 可以查看到la

  • 我正在尝试构建然后在Jenkins上运行docker映像。我在AWS ec2服务器上的ubuntu上设置了Jenkins。当我尝试构建时,我会收到这个错误: 为了便于参考,我还附上了我的詹金斯档案。 我正在使用Jenkins的默认管理员帐户。 我还将Jenkins用户添加到docker组。但这并没有解决问题。我还通过运行以下程序验证了这一点: 其输出: 如果你需要任何进一步的信息,请告诉我。

  • 我有Microsoft Windows 10 Pro版本10.0.19041n/a Build 19041,我按照以下步骤https://docs.Microsoft.com/en-us/Windows/wsl/install-win10使用WLS2在上面安装Ubuntu 20.04 LTS,我按照以下步骤安装Dockerhttps://docs.docker.com/engine/install

  • 我创建了一个Dockerfile来在Docker中运行Docker: 启动容器并运行docker ps后,我得到:“无法连接到unix:///var/run/docker.sock.docker守护程序是否正在运行?" 我在容器中执行了命令dockerd,结果是: 启动守护程序时出错:初始化网络控制器时出错:获取控制器实例时出错:未能创建NAT链DOCKER:iptables失败:iptables

  • 问题内容: 我正在构建一个小型聊天应用程序,其中客户端A希望通过服务器B将某些东西发送到客户端C。首先,这是解决问题的正确方法吗?我能够向服务器发送数据或从服务器接收数据,但仅限于客户端。例如,如果客户端A向服务器B发送数据而客户端C向服务器B发送数据,则我可以将数据发送回服务器A和C就像回显服务器一样。但是我想要的是将来自客户端A的数据通过服务器B转发到客户端C。 以下是服务器代码: 客户端代码

  • 我正在运行安装了以下docker软件的Ubuntu: