Docker部署jenkins容器时,允许jenkins容器内部控制宿主机上的docker

参数对Jenkins容器操作Docker的影响

 

-v /usr/bin/docker:/usr/bin/docker
-v /var/run/docker.sock:/var/run/docker.sock

-v /usr/bin/docker:/usr/bin/docker 是将宿主机的 Docker 可执行文件路径挂载到 Jenkins 容器中。这一挂载解决了 Jenkins 容器内无法直接调用 Docker 命令的问题,以下是具体原因和解释:

1. ​容器内调用 Docker 命令的需求

Jenkins 容器在执行构建任务时,可能需要调用 Docker 命令来构建或运行其他容器。例如,在 Jenkins 流水线中,您可能会使用 docker build 或 docker run 等命令。如果容器内没有 Docker 可执行文件,这些命令将无法执行。

2. ​Docker 可执行文件的挂载

通过 -v /usr/bin/docker:/usr/bin/docker,您将宿主机的 Docker 可执行文件挂载到容器中。这样,Jenkins 容器内就可以直接调用宿主机的 Docker 命令,而无需在容器内安装 Docker 客户端。

3. ​Docker 套接字的挂载

-v /var/run/docker.sock:/var/run/docker.sock 是将宿主机的 Docker 套接字挂载到容器中。这使得 Jenkins 容器能够与宿主机的 Docker 守护进程通信,从而执行 Docker 命令。然而,仅有套接字挂载是不够的,还需要 Docker 可执行文件来发起这些命令。

4. ​为什么需要两者结合

  • Docker 套接字:提供了与 Docker 守护进程通信的能力。
  • Docker 可执行文件:提供了发起 Docker 命令的能力。
    两者结合后,Jenkins 容器既能够与 Docker 守护进程通信,又能够发起 Docker 命令,从而实现完整的 Docker 功能。

在执行docker run命令时,是否加入-v /var/run/docker.sock:/var/run/docker.sock这个参数,会对容器中Jenkins的功能产生显著影响:

如果没有加入该参数: Jenkins容器将无法直接与宿主机上的Docker守护进程进行交互。这限制了Jenkins使用其插件(例如Docker Pipeline或依赖Docker的构建步骤)直接操控宿主机上的Docker。

如果加入了该参数: 通过-v /var/run/docker.sock:/var/run/docker.sock参数,宿主机上的Docker守护进程监听的Unix套接字文件被映射到Jenkins容器内。这样,Jenkins容器内的进程就能够与宿主机的Docker守护进程通信,执行启动、停止、构建和管理Docker容器等操作。这对于自动化CI/CD流程至关重要,比如在Jenkins中创建Docker镜像、运行Docker容器进行测试或将应用部署到Docker容器中。

简而言之,添加该卷挂载使得Jenkins能够实现更高级的容器化构建和部署自动化,而不添加则限制了Jenkins在容器内直接操作宿主机Docker环境的能力。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值