Я создал образ докера для приложения Python PyQt4 с использованием Ubuntu 14.04, теперь, когда я запускаю контейнер, я хочу получить доступ к ip и интерфейсам хоста докера - PullRequest
1 голос
/ 27 мая 2019

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

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

я попытался сделать имя-хоста ifconfig, в результате я получаю ошибку dockerhostmachi: ошибка при получении информации об интерфейсе: устройство не найдено

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

ОТ Убунту: 14.04

Установить зависимости

RUN apt-get update && apt-get install -y \ python-dev \ libffi-dev \ libssl-dev \ перечисление python \ apache2 \ libapache2-mod-wsgi \ питон-пип \ 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/

RUN a2enmod wsgi

Мне нужно получить результат ifconfig для хоста Docker из контейнера Docker или при запуске образа Docker.

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

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

  1. МЕТОД: вы можете создать свою собственную сеть и связаться с ней.

$ sudo docker network create --driver= мост --subnet = 192.168.10.0 / 24 --gateway = 192.168.10.1 doc1net
или
$ sudo docker network create --driver = мост --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-й метод работал для меня.

0 голосов
/ 27 мая 2019

Когда вы запускаете образ / контейнер Docker, вы можете указать переменную окружения, используя параметр -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

...