【问题标题】:How to get Container Id of Docker in Jenkins如何在 Jenkins 中获取 Docker 的容器 ID
【发布时间】:2015-11-27 09:20:09
【问题描述】:

我正在使用Docker Custom Build Environment Plugin"jpetazzo/dind" docker 映像中构建我的项目。构建后,在控制台输出中显示:

Docker 容器 212ad049dfdf8b7180b8c9b185ddfc586b301174414c40969994f7b3e64f68bc 开始托管构建

$ docker exec --tty 212ad049dfdf8b7180b8c9b185ddfc586b301174414c40969994f7b3e64f68bc 环境

[工作区] $ docker exec --tty --user 122:docker 4aea29fff86ba4e50dbcc7387f4f23c55ff3661322fb430a099435e905d6eeef env BUILD_DISPLAY_NAME=#73

这里启动的 Docker Container 的容器 id 为 212ad049dfdf8b7180b8c9b185ddfc586b301174414c40969994f7b3e64f68bc 。 现在我想进一步在 Jenkins 的“Build”选项中的“Execute shell”部分执行一些命令,我​​想使用这个 Container Id。我尝试使用插件页面中提到的${BUILD_CONTAINER_ID}。但这不起作用。

【问题讨论】:

    标签: jenkins docker containers


    【解决方案1】:

    文档告诉您使用docker run,但您尝试使用docker execexec 子命令仅适用于当前运行的容器。

    我想你可以使用docker run -d 在后台启动容器,然后确保在完成后使用docker stop。不过,我怀疑这会在出现问题时留下一些孤立的运行容器。

    【讨论】:

    • 但是对于docker run,您需要传递至少 1 个参数,图像 ID 或容器 ID。否则它会给出这个错误: > docker: "run" 需要至少 1 个参数。而且我还尝试提供图像 ID,但我收到此错误:警告:加载配置文件时出错:stat /root/.docker/config.json:权限被拒绝无法连接到 Docker 守护进程。 docker daemon 是否在此主机上运行?
    • docker run -d jpetazzo/dind 在 Jenkins 之外工作。但是从詹金斯我得到了同样的权限被拒绝错误。甚至我的 jenkins 用户也被添加到 docker 组中。
    • 这个错误听起来像是你以root 运行,而你可能应该是jenkins。不过,您没有为我提供足够的背景信息。
    • 在 jenkins 正在执行的第三个命令docker exec --tty --user 122:docker 中,这意味着它正在分配用户 ID 122 和组 docker。当我在做whoami 时,它显示whoami: cannot find name for user ID 122 而且我是从jenkins 做的,所以我相信它将使用jenkins 用户而不是root 来完成。我的jenkins 用户在docker 组中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 2021-06-23
    • 1970-01-01
    • 2017-09-13
    相关资源
    最近更新 更多