Доступ к данным хост-машины изнутри контейнера Docker

Я хотел бы знать, как получить информацию о хост-машине, особенно MAC-адрес, внутри контейнера Docker.

4 ответа

Может быть, вы можете подойти к этой проблеме по-другому. Например. передать необходимую информацию от хоста к контейнеру через переменные среды.

docker run -e HOST_MAC=$(ifconfig -a | grep -Po 'HWaddr \K.*$') image

Это требует от вас изменения способа запуска контейнера, однако это, вероятно, самый чистый метод решения этой проблемы.

Еще один способ заключается в использовании --net=host во время запуска контейнера.

$# ifconfig -a | grep -Po 'HWaddr \K.*$'

00:00:00:00:00:00  
9c:b6:54:1d:80:4b  
48:5a:b6:67:9e:11   

$# docker run --net=host -it ubuntu:14.04 bash

$# ifconfig -a | grep -Po 'HWaddr \K.*$'

00:00:00:00:00:00  
9c:b6:54:1d:80:4b  
48:5a:b6:67:9e:11  

У вас есть много вариантов.

Другой вариант

docker run -it -v /var/log/:/log --name vmaccess busybox /bin/sh
grep eth0 /log/dmesg

[    2.307760] e1000 0000:00:03.0 eth0: (PCI:33MHz:32-bit) 08:00:27:98:dc:aa
[    2.307783] e1000 0000:00:03.0 eth0: Intel(R) PRO/1000 Network Connection
[    4.186427] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[    8.985277] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready

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

В этой статье показано, как вы можете получить эту информацию из /proof на хост-системе. Таким образом, если вы смонтируете / опробуете свой контейнер, вы сможете прочитать правильный файл и извлечь свою информацию.

Это не кажется безопасным, хотя, и я рекомендую против этого.

Другие вопросы по тегам