我有两个docker主机,一个用于生产,一个用于分段。据我所知,它们是完全一样的。他们运行相同的操作系统(Ubuntu)和相同的Docker版本。我通过Jenkins运行一个工作,它使用Docker中的链接功能。
在暂存时,它完全可以正常工作,但在生产时,如果失败则使用完全相同的命令。他们都使用相同的注册表。
这些命令(为隐私而稍作修改)
docker run --detach --name bymysql --env=MYSQL_ROOT_PASSWORD=password dockerdistro-staging:5000/mysql
docker run --link=bymysql -v /home/jenkins/data:/data dockerdistro-staging:5000/custom-container /command/we/run
使用暂存版本一切正常但是生产版本我得到以下错误,由我们自己的代码生成,该代码在标准端口上查找一个名为bymysql的mysql服务器。
mysqladmin: connect to server at 'bymysql' failed
error: 'Can't connect to MySQL server on 'bymysql' (111)'
Check that mysqld is running on bymysql and that the port is 3306.
鉴于它在登台时工作正常,我认为命令很好,并且与主机的配置存在某种差异。但我不知道什么会阻止链接功能工作。
奇怪的是,如果我手动在生产盒上运行相同的步骤,而不是通过Jenkins,它也适用于生产!
docker版本的输出(两者都相同)
Client:
Version: 1.12.3
API version: 1.24
Go version: go1.6.3
Git commit: 6b644ec
Built: Wed Oct 26 22:01:48 2016
OS/Arch: linux/amd64
Server:
Version: 1.12.3
API version: 1.24
Go version: go1.6.3
Git commit: 6b644ec
Built: Wed Oct 26 22:01:48 2016
OS/Arch: linux/amd64
docker network inspect的输出