簡體   English   中英

我已經使用 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 dockerhostname,結果我得到錯誤 dockerhostmachi: error fetching interface information: Device not found

這是我的 dockerfile

從 ubuntu:14.04

安裝依賴

運行 apt-get update && apt-get install -y \\ python-dev \\ libffi-dev \\ libssl-dev \\ python-enum \\ 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 映像時獲取 docker 主機的 ifconfig 結果。

當您運行 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. 方法:您可以創建自己的網絡並與之通信。

$ 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

這里子網和網關可以是你自己的網絡地址,doc1net 是我的網絡名稱。

2 方法

在運行 docker 時連接到您的網絡主機。

$ 須藤泊塢窗網絡ls
為您提供網絡列表。

$ sudo docker run -it --network=host myimage
這里 myimage 是我創建的圖像的名稱

第二種方法對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM