Я хотел бы знать, как получить информацию о главном компьютере, особенно MAC-адрес из контейнера Docker.Доступ к данным хост-машины из внутреннего контейнера Docker
ответ
Это будет зависеть от вашей хост-системе, так как вы не дают никакой информации, я просто буду считать CentOS
В этом article он показывает, как вы можете получить эту информацию из/доказать на хост-системе , Итак, если вы монтируете/доказываете в своем контейнере, вы должны быть в состоянии прочитать правильный файл и вытащить свою информацию.
Это не кажется безопасным, хотя, и я рекомендую против него.
У вас есть много вариантов.
вариант Аnother является
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
Может быть, вы можете подойти к этой проблеме иначе. Например. передавать информацию, необходимую от хоста к контейнеру, через переменные среды.
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