从在boot2docker / osx上运行的Docker容器中查找主机IP

5
我刚试图使用OS X上的boot2docker将一个应用程序移入docker容器中。此应用程序需要连接到运行在主机系统上的mysql服务器(不在应用程序容器或另一个容器中)。
现在,我正在努力配置“docker化”应用程序中的mysql主机名:到目前为止,它仅连接到localhost,但这不再起作用,因为它不再指向主机上实际运行的mysql。
作为一个快速解决方法,我将我的工作站私有IP(我的情况下是10.0.0.X)添加到了应用程序的mysql连接配置中。
然而,我想知道:是否有一种从docker容器内部自动查找主机私有IP地址的方法?
1个回答

2

您可以通过环境变量向容器内的应用程序提供IP和端口信息。

在您的容器中创建一个脚本,例如:

#!/bin/bash
export $MYSQL_HOST
export $MYSQL_PORT

echo $MYSQL_HOST
echo $MYSQL_PORT

# TODO: maybe your have to write some config files at this point

/start_your_app.sh # use the enviroment variables e.g. in your app config.

使用以下命令来运行您的容器镜像:

docker run -e MYSQL_HOST=192.168.172.1 MYSQL_PORT=3306 your_image

请查看例如http://serverascode.com/2014/05/29/environment-variables-with-docker.html的网站,了解如何在Docker中使用环境变量。

这是一个有效的解决方案/方法,但是我仍然很想知道如何找到主机系统IP地址 :) - Patrick Hagemeister
/sbin/ip route | awk '/default/ { print $3 }' 请参阅 - Pluto1010
@Pluto1010。在使用boot2docker时,这个方法不起作用。 - foldl
我认为应该在 MYSQL_PORT=3306 后面再加一个 -e,使其变成 docker run -e MYSQL_HOST=192.168.172.1 -e MYSQL_PORT=3306 your_image - Harmeet Singh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接