docker - 在 Jenkins 中使用 docker 的最佳实践?

标签 docker jenkins jenkins-pipeline

您好,我正在学习如何使用与 Docker 集成的 Jenkins,但我不明白我应该做什么来与它们进行通信。

我正在 Docker 容器内运行 Jenkins,并且想在管道中构建镜像。所以我需要在 Jenkins 容器内执行一些 docker 命令。

所以这里的事情就是 docker 来自哪里。我知道我们需要将 docker 主机守护进程(套接字)绑定(bind)安装到 Jenkins 容器,但该容器仍然需要二进制文件来执行 Docker。

我已经看到了一些实现此目标的方法,但我很困惑我应该做什么。我见过:

  • 绑定(bind)挂载 docker 二进制文件 (/usr/local/bin/docker:/usr/bin/docker)
  • 在镜像中安装 docker
  • 如果我没记错的话,蓝海镜像预装了 Docker(我还没有找到任何相关文档)

我也不明白 Jenkins 的 Docker 插件能为我做什么。

谢谢!

最佳答案

Docker 具有客户端服务器架构。服务器是 docker 守护进程,客户端基本上是命令行界面,允许您从命令行执行 docker ... 。

因此,当在 Docker 中运行 Jenkins 时,您将需要访问权限来连接到守护进程。这是通过将 /var/run/docker.sock 绑定(bind)到容器中来实现的。

此时您需要一些东西来与服务器 Deamon 进行通信。您可以通过提供对 docker 二进制文件的访问来做到这一点。这可以通过安装 docker 二进制文件或安装 Jenkins 容器内的客户端二进制文件。

或者,您可以使用 Docker Rest API 与守护程序进行通信,而无需在 Jenkins 容器内放置 Docker 客户端二进制文件。例如,您可以build an image using the API .

Also I don't understand what Docker plugins for Jenkins can do for me

Docker plugin for Jenkins对于您描述的用例没有用。该插件允许您使用 Docker 配置 Jenkins 从属服务器。例如,您可以在 Docker 容器内运行编译,该容器由 Jenkins 自动配置

关于docker - 在 Jenkins 中使用 docker 的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50237433/

相关文章:

mysql - 无法将 CSV 加载到 MySQL -(OS errno 13 - 权限被拒绝)

docker - 如何将本地文件夹映射为Docker容器或镜像的卷?

Jenkins 管道: abort an input in a stage cannot trigger the aborted post action of that stage

ubuntu - 设备或资源繁忙 - Docker

go - Docker API 调用返回 "server gave HTTP response to HTTPS client"

Jenkins 声明性管道 : Sequential execution of an axis of a matrix-build

ant - Jenkins:具有多个颠覆模块的单一作业

Jenkins 管道: "input" step blocks executor

git - 如何配置 Gerrit 触发器仅在主分支或分支发生更改(不包括(refs/for/*))时触发?

Jenkins 管道 : Why is CPS Global Lib not loading?