在使用 Docker 配置构建代理之前,Teamcity Build 不会运行?

2024-03-15

我为我的 Teamcity 管道创建了一个新版本。我第一次使用 Docker buildstep。设置完所有内容后,我意识到构建代理似乎还没有准备好。

我知道我的代理似乎还没有准备好使用 docker 进行构建but没有人真正告诉我如何做到这一点。我阅读了官方指南,但没有提及如何将 docker 安装到我的代理中(如果这是解决问题的方法)。

有人能告诉我我必须做什么才能让它发挥作用吗?

EDIT

@Senior Pomidor 帮助我更近了一步。我将他的第一个示例添加到 docker run 命令中

docker run -it -e SERVER_URL="<url to TeamCity server>"  \
    --privileged -e DOCKER_IN_DOCKER=start \    
    jetbrains/teamcity-agent 

这样做之后,我删除了屏幕截图中提到的消息。我的代理配置现在具有以下内容:

docker.server.osType     linux
docker.server.version    18.06.1
docker.version   18.06.1

ButTeamcity 仍在抱怨此消息:

这让我再次毫无头绪。

最终解决方案: 只需重新启动 teamcity 服务器实例即可解决即将出现的 EDIT2 问题。代理实际上能够运行构建,但 teamcity 在不重新启动的情况下无法意识到这一点。

EDIT2

请求信息:

我的 CI 服务器操作系统:

PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"

运行容器:

CONTAINER ID        IMAGE                       COMMAND              CREATED             STATUS              PORTS                  NAMES
0f8e0b04d6a6        jetbrains/teamcity-agent    "/run-services.sh"   19 hours ago        Up 19 hours         9090/tcp               teamcity-agent
20964c22b2d9        jetbrains/teamcity-server   "/run-services.sh"   37 hours ago        Up 37 hours         0.0.0.0:80->8111/tcp   teamcity-server-instance

容器运行者:

## Server
docker run -dit --name teamcity-server-instance  -v /data/teamcity:/data/teamcity_server/datadir -v /var/log/teamcity:/opt/teamcity/logs  -p 80:8111 jetbrains/teamcity-server

## Agent
docker run -itd --name teamcity-agent -e SERVER_URL="XXX.XXX.XXX.XXX:80"  --privileged -e DOCKER_IN_DOCKER=start -v /etc/teamcity/agent/conf:/data/teamcity_agent/conf jetbrains/teamcity-agent

构建步骤信息:


由于 TA 没有启动 Docker 守护进程,TC 限制了配置。

你应该通过-e DOCKER_IN_DOCKER=start用于自动启动容器中的 docker 守护进程。此外,docker 守护进程需要 docker 套接字。在 Linux 容器中,如果您需要在构建中使用 Docker 守护进程,您有两个选择:

  • --privileged 旗帜。在容器中运行的新 Docker 守护进程
  • -v docker_volumes:/var/lib/docker来自主机的 Docker(在这种情况下,您将受益于主机和所有容器之间共享的缓存,但存在安全问题:您的构建实际上可能会损害您的主机 Docker,因此使用它需要您自担风险)

在 Linux 容器中,如果您需要在构建中使用 Docker 守护进程,您有两个选择:

  1. 来自主机的 Docker(在这种情况下,您将受益于主机和所有容器之间共享的缓存,但存在安全问题:您的构建实际上可能会损害您的主机 Docker,因此使用它需要您自担风险)

examples

docker run -it -e SERVER_URL="<url to TeamCity server>"  \
    --privileged -e DOCKER_IN_DOCKER=start \    
    jetbrains/teamcity-agent 

docker run -it -e SERVER_URL="<url to TeamCity server>"  \
    -v /var/run/docker.sock:/var/run/docker.sock  \
    jetbrains/teamcity-agent 

UPD

docker.server.osType必需的,因为在构建步骤中设置了linux

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在使用 Docker 配置构建代理之前,Teamcity Build 不会运行? 的相关文章

  • 为什么 jar 执行的通配符在 docker CMD 中不起作用?

    我有一个Dockerfile与以下CMD启动我的 Spring Boot 应用程序 FROM java 8 jre CMD java jar app file jar 当我尝试从创建的图像启动容器时 我得到 Error Unable to
  • 如何禁用docker容器的root访问权限?

    我们有离岸开发人员 他们希望在本地运行我们的服务器 但出于安全原因 我们不想向他们提供服务器代码 所以一个解决方案是他们运行一个 Docker 容器 这是我们服务器的独立版本 所以他们这边没有复杂的设置 问题在于 始终可以以 root 身份
  • 使用 Nginx 在 Docker 容器内部署带有路由器的 Angular2

    我正在尝试部署一个使用框架的路由器功能的 Angular 2 但在 docker 容器内使用 nginx 为其提供服务时遇到一些问题 由 angular cli 构建的 Angular 应用程序具有如下文件结构 dist 08c42df75
  • 使用 tc 限制 Docker 容器的传出网络带宽

    我正在尝试对 Docker 容器进行带宽限制 为了限制下行带宽 我可以先找到容器的veth接口并使用tc tc qdisc add dev vethpair1 root tbf rate 1mbit latency 50ms burst 1
  • 让 hudson 将源签出到特定目录

    这似乎是一个简单的任务 但在我的一生中 我无法让 Hudson 将我的源代码签出到特定目录 我可以在命令行上使用 svn 查看源代码 我尝试在源代码管理下指定本地模块设置 但没有骰子 我将其设置为 c source trunk 并在运行构建
  • 上下文更改后 Docker“协议不可用”

    我改变了我的码头环境 现在 当我运行任何 docker 命令时 我得到protocol not available 如果无法运行任何 docker 命令 如何更改回上下文 基本上我做了以下事情 I ran docker context li
  • Docker EXPOSE 使用运行时环境变量

    我的 Dockerfile 设置了一些环境变量的默认值 然后公开了两个应该是提供的环境变量的端口 FROM python 3 6 5 stretch ENV MY SERVICE PORT 8080 ENV MY SERVICE PORT
  • 在 docker 中将 pgadmin 连接到 postgres

    我有一个docker compose与服务文件python nginx postgres and pgadmin services postgres image postgres 9 6 env file env volumes postg
  • Jenkins:在管道 Jenkins 文件内执行 AWS CLI 命令

    您知道如何在 aws 中执行 AWS CLI 命令吗 Jenkinsfile为了建立管道 我没有找到任何插件 首先 您需要在服务器上安装 aws cli 并确保 jenkins 用户有权运行它 或者在创建 EC2 实例时简单地使用 Amaz
  • 如何从连接到外部网络的另一个组合访问容器?

    这是带有容器配置的撰写文件 我希望从外部容器连接到该容器 在另一个撰写文件中定义 version 3 5 services service to connect to build networks my external network n
  • 在docker中,存储驱动程序和支持文件系统有何不同?

    The docker info命令列出两个存储驱动程序 例如设备映射器和支持文件系统 例如XFS 这两个属性的含义是什么 它们有何不同 存储驱动程序 是docker用来管理存储的软件组件 这可能是其中之一overlay驱动程序 它使用ove
  • 连接被拒绝:当uwsgi和nginx在不同容器中时

    我正在尝试设置两个 docker 容器 是的 无需 docker compose 分开 一个带有 nginx 另一个带有带有基本 Flask 应用程序的 uwsgi 我在 docker 内的同一网络中运行容器我的 nginx 配置已添加 链
  • 从多个开发机器管理远程 docker 机器

    可以从另一个工作站管理使用 docker machine 命令从一个开发人员工作站创建的 docker 机器吗 我不是在寻找涉及 docker swarm 的解决方案 而只是寻找涉及 docker machine 的解决方案 据我了解 当
  • 无法连接到 macOS 上的 Docker 守护进程

    我通常更喜欢使用brew 来管理我的OSX 上的应用程序 我能够安装 docker docker compose 和 docker machine docker version Docker version 17 05 0 ce build
  • NSQ Docker Swarm

    我尝试在 Docker Swarm 中使用 NSQ 但没有成功 mhlg rpi nsq 是为 Raspberry Pi ARM7 板构建的 Docker 映像 如果作为普通 Docker 容器运行 我可以确认其工作正常 在 Docker
  • 如何判断我是否通过脚本登录到私有 Docker 注册表?

    如何判断我是否通过脚本登录到私有 Docker 注册表服务器 换句话说 有docker login some registry com已成功运行 并且仍然有效 注意 我问的是任意私有注册表 而不是docker io注册表 如果 docker
  • Nginx docker容器代理传递到另一个端口

    我想在 docker 容器中运行 Nginx 它监听端口 80 并且当 url 以 word 开头时 我希望它 proxy pass 到端口 8080api 我有一些网络应用程序侦听端口 8080 这在没有 docker 的情况下对我来说一
  • 无法解决dll之间的冲突

    我在构建中收到类似于以下内容的警告墙 No way to resolve conflict between Newtonsoft Json Version 7 0 0 0 and Newtonsoft Json Version 6 0 0
  • Redis+Docker+Django - 错误 111 连接被拒绝

    我正在尝试使用 Redis 作为使用 Docker Compose 的 Django 项目的 Celery 代理 我无法弄清楚我到底做错了什么 但尽管控制台日志消息告诉我 Redis 正在运行并接受连接 事实上 当我这样做时 docker
  • 构建 Vue 微前端应用程序(带有路由和 vuex 存储)

    我需要帮助配置使用 Vuex Vue Router 和 Vue i18n 的微前端应用程序的构建 分发 TL DR 我在构建将导入到现有系统中的微前端应用程序时遇到问题 我们的团队尝试通过 vue cli service 和 vue web

随机推荐

  • 读取 aws 凭证文件的最佳方式

    在我的 python 代码中 我需要提取 AWS 凭证 AWS SECRET ACCESS KEY 和 AWS ACCESS KEY ID 它们存储在纯文本文件中 如下所述 https docs aws amazon com sdkref
  • Google“OpenID Connect”和“使用 Google 登录”之间的区别?

    我希望我的网站的用户使用 Google 帐户进行身份验证 登录我的网站 首要的use case用户将编辑和生成内容 我们希望以安全的方式记录所有权 我们对获取用户谷歌数据不感兴趣 我们只是想要一种对用户进行身份验证的方法 谷歌搜索后 我发现
  • 是否有“std::condition_variable”的“notify_one()”队列?

    考虑第一个线程函数和全局变量 std mutex mut std condition variable officer bool firstPlayerIsReady false bool secondPlayerIsReady false
  • 是否可以在没有 IIS 的情况下使用 Windows 集成身份验证?

    我有一个 nginx 反向代理到一些节点应用程序 我们的用户都位于 Windows 域控制网络上 我知道我可以使用快递 ntlm https github com einfallstoll express ntlm or 护照 window
  • python 错误:ImportError:sys.meta_path 为 None,Python 可能会关闭

    我在pycharm中编写了一个python程序 包括FBCrawl py html login py common glovar py 在glovar py中 我定义了一个变量webdriver browser 并希望在FBCrawl py
  • StringBuffer如何在不创建两个对象的情况下实现append功能?

    这是一个面试问题 我被要求实施StringBuffer追加功能 面试后我看到了代码 但我无法理解如何通过创建单个对象来完成该操作 我是这样想的 String s orange s append apple 这里创建了两个对象 But Str
  • Java 本地化数字格式

    Java 使用小数点的句点 例如1 2 0 5 有没有办法让它使用逗号代替 如 1 2 0 5 并且不要使用逗号来表示千 例如十万 100 000 而是使用空格 100 000 当谈到输出时 我想我可以使用各种字符串格式函数 但问题是输入
  • 从字符串中删除 %0A

    我怎样才能从这个字符串中删除 0A 这是输入关键代码 我需要从整个字符串中删除它 那么我该怎么做呢 input NA 0A 0AJKhell 这是测试 0A Output NAJKhell 这是测试 Update String Commen
  • 每次调用任何其他方法之前调用一个方法

    我有一个类 该类中有一个私有方法和许多公共方法 每次调用任何其他方法之前都必须调用此私有方法 最简单的方法是在每个方法中调用该方法 但我不喜欢这种方法 还有其他方法可以实现这一目标吗 您也许可以使用 AOP 在这里做一些事情 也许通过后锐利
  • 使用 Linq 的属性选择器和Where 查询

    我正在尝试这样做 public class SomeEntityClass public Guid MyClassProperty get set public class AnotherEntityClass public Guid An
  • 如何通过 CocoaPods 使用本地项目

    我正在努力寻找一种方法来将我们创建的 Xcode 框架打包为 Pod 该框架仅在内部使用 不公开 不在 github 上 我该如何修改 podspec从我的开发机器上的本地 Xcode 项目构建 SDK 本地 CocoaPods 依赖管理器
  • 如何检查CRAN镜像是否过时?

    建议R用户从本地CRAN镜像下载R和R包 但有些已经过时了 有没有一种简单的方法来检查存储库是否已过时 R中有什么函数可以做到这一点吗 一种方法是查看 CRANMIRROR src contrib 并按日期排序 通过在日期上单击两次 以便您
  • Java Swing Mac OSX 首选项菜单

    我正在尝试将 首选项 菜单添加到我的 Java Swing 应用程序中 但事实证明它有点令人作呕 我读过很多关于这方面的帖子和文章 听起来很简单 但是 我看到参考文献com apple eawt Application在我找到的示例中 但是
  • PHP imagepng() 正在创建损坏的图像

    我到处寻找可能的解决方案来解决我的问题 不幸的是我似乎无法弄清楚 我有一个 php 文件 它根据其他图像创建图像 我让脚本完全按照现在的方式运行 没有任何缺陷 但在摆弄其他一些文件后 它突然停止工作 并在 Firefox Chrome 和
  • Android:MediaPlayer 已定稿但未发布

    我正在我当前正在开发的应用程序中使用 MediaPlayer 类 我想在 Activity 的生命周期内保留 MediaPlayer 类的实例 我在 Activity 的 onPause 方法中释放 MediaPlayer 类中的资源 但是
  • 在带有 webpack 的 Angular cli 中,如何关闭 ng 服务上的 typescript linting

    在带有 webpack 的 Angular cli 中 如何关闭 ng 服务上的 typescript linting 我遇到一些愚蠢的错误 需要跳过 我可以做他们的任何角度 cli 设置来关闭正在检查的打字稿吗 这是我使用的应用程序 ht
  • Android setRequestProperty 在 url.openConnection()

    我有一个 Android 应用程序需要在连接中设置请求属性 这是我的代码 URL url new URL sUrl HttpURLConnection connection HttpURLConnection url openConnect
  • 删除数字字符串python [重复]

    这个问题在这里已经有答案了 对于我的作业 我必须创建一个函数 该函数返回一个与给定字符串相同的新字符串 但删除了数字 示例 删除数字 abc123 将返回字符串 abc 我已经尝试了几乎所有我能想到的方法 但它不能正常工作 def test
  • AWS S3 Glacier - 以编程方式启动恢复

    我一直在编写一个网络应用程序 使用 s3 进行存储 使用 Glacier 进行备份 所以我设置了生命周期策略来存档它 现在我想编写一个列出存档文件的网络应用程序 用户应该能够从中启动恢复 然后在恢复完成后收到一封电子邮件 现在我遇到的麻烦是
  • 在使用 Docker 配置构建代理之前,Teamcity Build 不会运行?

    我为我的 Teamcity 管道创建了一个新版本 我第一次使用 Docker buildstep 设置完所有内容后 我意识到构建代理似乎还没有准备好 我知道我的代理似乎还没有准备好使用 docker 进行构建but没有人真正告诉我如何做到这