我对TeamCity和Docker都是全新的。我正在努力让TeamCity的Docker容器在我的本地机器上运行并可用。我尝试了几件事,但无济于事:
我按说明here安装了Docker for Mac。然后我尝试运行以下命令,记录here,以便在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:来自守护程序的错误响应:无效的bind mount规范“c:dockerdata:/ data / teamcity_server / datadir”:无效模式:/ data / teamcity_server / datadir。
采取不同的策略,我尝试按照说明here - 我尝试运行以下命令:
docker run -it --name teamcity -p 8111:8111 sjoerdmulder/teamcity
终端表示它正在启动一个Web服务器,但是我无法在localhost或localhost:8111上浏览它(错误ERR_SOCKET_NOT_CONNECTED没有端口,ERR_CONNECTION_REFUSED带端口)。
由于带有docker run命令的网站说要通过Docker Toolbox安装Docker,然后我将它安装在他们指向的位置(here)。然后我尝试了
docker-machine ip default
他们建议命令,但它不起作用,错误“主机不存在:”默认为“”。这是有道理的,因为该网站说“默认”vm将通过运行Docker Quickstart创建,我没有这样做,但他们没有提供任何链接到Docker Quickstart,所以我不知道他们在说什么约。
为了尝试获取容器运行的IP地址,我尝试了这个命令
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
列出了正在运行的容器的名称,每个容器后跟一个连字符,然后没有。我也试过
docker ps -a
那也列出了运行容器,但没有给出IP。此外,端口是空白的,状态显示为“exited(130)4分钟前”,因此启动后容器似乎不会保持活动状态。
我还尝试使用端口80,希望这会使网站显示在localhost:
docker run -it --name teamcity2 -p 80:80 sjoerdmulder/teamcity
所以在这一点上,我完全被困惑和阻止 - 我无法按照hub.docker.com上的说明启动服务器,我无法弄清楚如何浏览到启动其他说明。
如果有任何帮助,我将非常感激!
答案 0 :(得分:3)
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
部分。它将您计算机上的端口8111映射到VM Docker for Mac中的端口8111,以便运行您的容器。 ERR_CONNECTION_REFUSED
可能是由几件事引起的。两种最有可能的可能性是
-it
将以交互模式启动TeamCity容器。如果退出运行命令的终端窗口,容器也可能会终止并且将无法访问。解决方案是不要关闭窗口或以detached模式运行容器。这里很好地概述了Docker for Mac和Docker Toolbox之间的区别:Docker for Mac vs. Docker Toolbox。您不需要两者,并且在大多数情况下,您将希望使用Docker for Mac在本地测试内容。