【问题标题】:Find host ip from a docker container running in boot2docker / osx从在 boot2docker / osx 中运行的 docker 容器中查找主机 ip
【发布时间】:2015-05-04 09:40:34
【问题描述】:

我刚刚尝试在 OS X 上使用 boot2docker 将应用移动到 docker 容器中。

此应用需要连接到在主机系统上运行的 mysql 服务器(不在应用的容器或其他容器中)。

现在我正在努力在“dockerized”应用程序中配置 mysql 主机名:到目前为止,它只是连接到 localhost,但这不再起作用,因为它不再指向主机mysql实际上正在运行。

作为一种快速解决方法,我已将我的工作站私有 IP(在我的例子中为 10.0.0.X)添加到应用程序的 mysql 连接配置中。

但是我想知道: 是否有一种自动方法可以从 docker 容器中找到 主机的私有 IP 地址

【问题讨论】:

    标签: macos docker boot2docker


    【解决方案1】:

    您可以通过环境变量向包含的应用程序提供 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

    【讨论】:

    • 这是一个有效的解决方案/可行的方法 - 但是我仍然很想知道如何找到主机系统 IP:)
    • /sbin/ip route|awk '/default/ { print $3 }' look here
    • @Pluto1010。这在使用 boot2docker 时不起作用。
    • 我认为应该还有一个 -eMYSQL_PORT=3306 使其成为 docker run -e MYSQL_HOST=192.168.172.1 -e MYSQL_PORT=3306 your_image
    猜你喜欢
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    相关资源
    最近更新 更多