- 我运行 RancherOS 来运行 docker 容器
- 我在 GUI 上创建了一个容器来运行我的数据库(图片:mysql,名称:r-mysql-e4e8df05)。不同的容器使用它。
- 我可以在 GUI 上将其他容器链接到它
- 这次我想在 jenkins 上自动创建和启动一个容器,但链接工作不正常
我的命令:
docker run -d --name=app-that-needs-mysql --link mysql:mysql myimages.mycompany.com/appthatneedsmysql
我得到错误:
Error response from daemon: Could not get container for mysql
我尝试了不同的方法:
1)
--link r-mysql-e4e8df05:mysql
错误:
Cannot link to /r-mysql-e4e8df05, as it does not belong to the default network
2)
尝试使用 --net
选项
运行:docker network ls
NETWORK ID NAME DRIVER SCOPE
c..........e bridge bridge local
4..........c host host local
c..........a none null local
- 使用
--net none
它成功了,但实际上它不起作用。应用无法连接到数据库 - 使用
--net host
错误消息冲突选项:主机类型网络不能与链接一起使用。这将导致未定义的行为
- 使用
--net bridge
错误消息:无法链接到/r-mysql-e4e8df05,因为它不属于默认网络
它得到一个 continer IP
开始于:10.X.X.X
我也尝试过添加 --net managed
但错误:network managed not found
我想我想念这个 docker 链接过程中的一些东西。 请给我一些想法,我怎样才能使这些工作。
(以前当我创建相同的容器并链接到 GUI 中的 mysql 时它正在工作)
最佳答案
嘿@Tomi,你可以在任何你喜欢的端口上从 rancher 公开 mysql 容器。这样你就不必链接容器,然后你的 Jenkins 产生的容器连接到主机上暴露端口上的容器。您还可以使用 rancher cli 使用 jenkins 在 rancher 中启动容器。这样一来,您就不必在主机网络上使用 mysql 了……一些用 Rancher 剥皮的方法。
关于docker - 在 docker 中链接容器(RancherOS 和命令行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49273718/