Доступ к данным хост-машины изнутри контейнера 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 на хост-системе. Таким образом, если вы смонтируете / опробуете свой контейнер, вы сможете прочитать правильный файл и извлечь свою информацию.
Это не кажется безопасным, хотя, и я рекомендую против этого.