【问题标题】:Jenkins: running docker commands on a docker slaveJenkins:在 docker slave 上运行 docker 命令
【发布时间】:2016-11-25 10:37:43
【问题描述】:

我正在使用Kubernetes Jenkins 插件来编排詹金斯奴隶

我想在 Docker 中运行所有作业(构建 docker 映像并在 docker 中执行测试/构建)。

詹金斯工作示例:

docker run -e NEXUS_USERNAME=${NEXUS_USERNAME} -e NEXUS_PASSWORD=${NEXUS_PASSWORD} common-dropwizard:latest mvn deploy

我从这里使用 jenkinsci/jnlp-slave:https://hub.docker.com/r/jenkinsci/jnlp-slave/

不幸的是,从属映像似乎不支持运行 docker。我的问题是实现这一目标的最佳方法是什么?

谢谢

【问题讨论】:

    标签: jenkins docker kubernetes


    【解决方案1】:

    您需要安装 docker 客户端并挂载 docker 套接字,以便您可以访问 Docker 主机。然后你就可以与那个 Docker 主机交互了

    https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/ https://github.com/jenkinsci/docker-workflow-plugin/tree/master/demo

    【讨论】:

    • DinD 可能不需要...通过-v /var/run/docker.sock:/var/run/docker.sock 安装插座效果很好。请注意,您可能需要传入 --privileged=true 标志
    • 我也在尝试运行 docker 命令,但映射 docker.sock 和设置特权 true 没有奏效。我尝试在 jenkins 仪表板中配置 pod 并使用管道 podTemplate 函数。我的 JenkinsFile (gist.github.com/otaviosoares/fc132dcb863e75161431ed00b95f06ba) 的一部分我使用的图像基于 jenkinsci/jnlp-slave 并安装了 git 和 docker。我得到的错误是“docker:not found”我做错了吗?谢谢
    • 那么docker不在PATH之类的地方
    • 我想通了。我没有将容器名称设置为 jnlp,因此它在 pod 内创建了另一个容器。谢谢
    猜你喜欢
    • 2019-01-18
    • 2021-07-13
    • 2019-01-28
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    相关资源
    最近更新 更多