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

时间:2019-05-27 10:57:27

标签: python docker ubuntu-14.04 docker-container docker-network

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

如果有人告诉我从Docker容器中获取Docker主机的IP地址,那将是很棒的事情。

我尝试做ifconfig dockerhostname, 结果我得到了错误 dockerhostmachi:获取接口信息时出错:找不到设备

这是我的dockerfile

从ubuntu:14.04

安装依赖项

运行apt-get更新&& apt-get安装-y \     python-dev \     libffi-dev \     libssl-dev \     python枚举\     apache2 \     libapache2-mod-wsgi \     python-pip \     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/

运行a2enmod wsgi

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

2 个答案:

答案 0 :(得分:0)

运行docker image / container时,可以使用-e参数指定环境变量。这样做可能像:     docker run -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 :(得分:0)

以下问题的答案如下。

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

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

此处的子网和网关可以是您自己的网络地址,而doc1net是我的网络名称。

2种方法

运行docker时,请与您的网络主机连接。

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

$ sudo docker run -it-网络主机myimage
这里myimage是我创建的图像的名称

第二种方法对我有用。