【问题标题】:How to allow Jenkins to call docker out of the container如何让 Jenkins 从容器中调用 docker
【发布时间】:2019-01-21 13:47:59
【问题描述】:

我已经在本地安装了 OpenShift 平台。 Jenkins 已作为 dockerized 应用程序部署在那里。我需要在 Jenkins 作业执行期间调用 Docker 来执行一些基本的 Docker 操作:构建、推送、拉取。

很遗憾,无法从 Jenkins 容器中访问 Docker。

$ oc exec -it jenkins-1-cdjdx -- /bin/bash
$ docker
bash: docker: command not found

据我了解,我必须安装 Docker plugin 并为 Jenkins 全局设置执行一个新的云项目。所以我会尝试将 Docker 描述为一个新的云项目,但不幸的是我不知道如何定义 Docker 主机 URI 和端口。

【问题讨论】:

    标签: docker jenkins kubernetes openshift


    【解决方案1】:

    Docker 插件不会将 docker 安装到容器中,它只会将 docker 支持添加到 Jenkins。

    您需要在 Jenkins 容器中安装 docker 客户端。我不知道您使用的是哪个图像,但希望您能找到正确的方法。

    然后,您有 2 种方法可以让它发挥作用:

    1. 将 docker 套接字从主机连接到容器。这意味着,您需要将主机的 /var/run/docker.sock 挂载到容器中的同一路径。在 OpenShift 中,您还可以使用 exposeDockerSocket 选项作为 build strategy,但我认为您不会在这里使用该功能。但是如果你把它作为一个普通的 pod 运行,你需要使用“hostPath”卷来挂载它。另外,我认为您需要修改安全策略,请查看that 问题。
    2. 直接在您的容器中运行独立的 Docker,该模式名为 Docker-in-Docker。你可以用谷歌搜索,但我认为第一个选项对你来说更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-22
      • 2019-04-08
      • 1970-01-01
      • 2019-05-30
      • 2017-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多