我已经使用 ubuntu 14.04 为 python PyQt4 应用程序创建了一个 docker 图像,现在当我 运行 容器时我想访问 docker 主机 IP 和接口

I have created a docker image for python PyQt4 application using ubuntu 14.04 ,now when i run container i wan to access docker host ip and interfaces

我想获取 docker 主机 IP 地址和接口名称,即 docker 主机的 ifconfig。相反,我在 docker 容器中执行 ifconfig 时获得 docker 容器 IP 地址。

如果有人告诉我从 docker 容器中获取 docker 主机的 IP 地址,那就太好了。

我试过 ifconfig docker主机名, 结果我得到错误 dockerhostmachi:获取接口信息时出错:找不到设备

这是我的docker文件

来自 ubuntu:14.04

安装依赖项

运行 apt-get update && apt-get install -y \ python-开发\ libffi-开发\ libssl-开发\ python-枚举\ 阿帕奇2 \ libapache2-mod-wsgi \ python-点子\ python-qt4

RUN chmod -R 777 /var/log/apache2/error.log
RUN chmod -R 777 /var/log/apache2/other_vhosts_access.log
RUN chmod -R 777 /var/log/apache2/access.log
RUN chmod -R 777 /var/run/apache2/

运行a2enmodwsgi

我需要从 docker 容器或当我 运行 docker 图像时获取 docker 主机的 ifconfig 结果。

当您 运行 docker image/container 时,您可以使用 -e 参数指定环境变量。这样做可能像: docker 运行 -e ip=docker_host_ip ...

那么它应该作为环境变量在容器端可用。

https://medium.com/the-code-review/top-10-docker-run-command-options-you-cant-live-without-a-reference-d256834e86c1

以上问题的答案如下。

  1. 方法:您可以创建自己的网络并与之通信。

$ sudo docker network create --driver=bridge --subnet=192.168.10.0/24 --gateway=192.168.10.1 doc1net

$ sudo docker network create --driver=bridge --subnet=10.45.0.0/24 --gateway=10.45.0.0 doc1net

这里sub-net和gateway可以是你自己的网络地址,doc1net是我的网络名。

2 方法

同时 运行正在 docker 连接到您的网络主机。

$ sudo docker 网络 ls
为您提供网络列表。

$ sudo docker 运行 -it --network=host myimage
这里 myimage 是我创建的图像的名称

第二种方法对我有用。