在 Docker 上获取 TeamCity 运行

Get TeamCity running on Docker

我是 TeamCity 和 Docker 的新手。我正在努力获得一个带有 TeamCity 运行ning 的 Docker 容器并可在我的本地计算机上使用。我尝试了几种方法,但无济于事:

我按照说明 here. I then tried to run the following command, documented here 为 Mac 安装了 Docker,用于在 docker 中设置 teamcity:

    docker run -it --name teamcity-server-instance \
    -v c:\docker\data:/data/teamcity_server/datadir \
    -v c:\docker\logs:/opt/teamcity/logs \
    -p 8111:8111 \
    jetbrains/teamcity-server

返回以下错误:docker:来自守护程序的错误响应:无效的绑定安装规范"c:dockerdata:/data/teamcity_server/datadir":无效模式:/data/teamcity_server/datadir.

采取不同的策略,我尝试按照说明进行操作 here - 我尝试 运行 执行以下命令:

    docker run -it --name teamcity -p 8111:8111 sjoerdmulder/teamcity 

终端指示它正在启动网络服务器,但我无法在本地主机或 localhost:8111 浏览到它(错误 ERR_SOCKET_NOT_CONNECTED 没有端口,并且 ERR_CONNECTION_REFUSED 与端口)。

由于带有 docker 运行 命令的网站说要通过 Docker 工具箱安装 Docker,我随后将其安装在他们指向的位置(here).然后我尝试了

    docker-machine ip default

他们建议的命令,但没有用,错误 "Host does not exist: "default""。这是有道理的,因为该网站说 "default" 虚拟机将由 运行ning Docker Quickstart 创建,而我没有这样做,但他们不提供任何 link 到 Docker 快速入门,所以我不知道他们在说什么。

为了尝试获取容器所在的 IP 地址 运行,我尝试了这个命令

    docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

列出了 运行ning 容器的名称,每个容器后跟一个连字符,然后什么都没有。我也试过

    docker ps -a

那也列出了 运行ning 容器,但没有给出 IP。另外,端口是空白的,状态显示 "exited (130) 4 minutes ago",所以看起来容器在启动后并没有保持活动状态。

我也再次尝试使用端口 80,希望该站点可以在本地主机上显示:

    docker run -it --name teamcity2 -p 80:80 sjoerdmulder/teamcity

所以在这一点上,我完全感到困惑和封锁 - 我根本无法按照 hub.docker.com 上的说明启动服务器,而且我不知道如何浏览该站点那确实是从其他指令开始的。

如有任何帮助,我将不胜感激!

JetBrains 现在为 TeamCity 提供 official docker images。我建议从这些开始。

他们的 TeamCity server 图像中的示例命令如下所示

docker run -it --name teamcity-server-instance  \
    -v <path to data directory>:/data/teamcity_server/datadir \
    -v <path to logs directory>:/opt/teamcity/logs  \
    -p <port on host>:8111 \
    jetbrains/teamcity-server

这看起来很像您的第一次尝试。但是,c:\docker\data 是一个 Windows 文件路径。您说您要 运行 在 mac 上执行此操作,所以这绝对行不通。

一旦 TeamCity 启动,它应该在端口 8111 上可用。这就是命令的 -p 8111:8111 部分所做的。它将 machine 上的端口 8111 映射到 VM Docker 中的端口 8111,以便 Mac 创建到 运行 您的容器。 ERR_CONNECTION_REFUSED 可能是由多种原因造成的。两种最有可能的可能性是

  1. TeamCity 可能需要一些时间才能启动,也许您没有给它足够的时间。解决方案是等待。
  2. -it 将以交互模式启动 TeamCity 容器。如果您退出 window 命令所在的终端 运行,容器也可能会终止并且无法访问。解决方案是在 detached 模式下不关闭 window 或 运行 容器。

这里有 Docker for Mac 和 Docker Toolbox 之间差异的很好概述:Docker for Mac vs. Docker Toolbox。您不需要两者,在大多数情况下,您会希望使用 Docker 代替 Mac 在本地进行测试。