Я создал образ докера для приложения python PyQt4 с использованием ubuntu 14.04, теперь, когда я запускаю контейнер, я хочу получить доступ к IP-адресу хоста докера и интерфейсам

Я хочу получить IP-адрес хост-машины докера и имена интерфейсов, то есть ifconfig хост-машины докера. вместо этого я получаю IP-адрес контейнера докеров при выполнении ifconfig в контейнере докеров.

Было бы здорово, если бы кто-нибудь сказал мне получить IP-адрес хост-машины докеров из контейнера докеров.

Я попытался выполнить ifconfig dockerhostname, в результате я получаю сообщение об ошибке dockerhostmachi: error fetching interface information: Device not found

Это мой файл докеров

ИЗ 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

Мне нужно получить результат ifconfig для хост-машины докеров из контейнера докеров или когда я запускаю образ докера.


person Rakesh Chahar    schedule 27.05.2019    source источник
comment
Если вы создаете графическое приложение, которому требуются детали конфигурации на уровне хоста, вам будет намного проще запустить его без Docker. Детали сети хоста намеренно скрыты от вашего контейнера, намеренно; запуск графических приложений также требует перепрыгивания через несколько препятствий с малозаметными сбоями.   -  person David Maze    schedule 27.05.2019
comment
Я использую докер для привязки всех зависимостей, чтобы я мог загрузить образ докера на другой компьютер, и без интернета я не смогу развернуть приложение и его зависимости. и придя к ip-адресу хост-машины докера, я могу выполнить ping-запрос из контейнера, но не могу получить подробную информацию об интерфейсах и его IP-адресе.   -  person Rakesh Chahar    schedule 27.05.2019


Ответы (2)


Когда вы запускаете 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

person user3760296    schedule 27.05.2019

Ответ на поставленный выше вопрос следующий.

  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 МЕТОД

Во время работы докера подключитесь к вашему сетевому узлу.

$ sudo docker network ls
дает вам список ваших сетей.

$ sudo docker run -it --network = host myimage
Здесь myimage - это имя созданного мной образа.

2-й метод сработал для меня.

person Rakesh Chahar    schedule 30.05.2019