Моя цель — сделать так, чтобы мой контейнер Linux работал в той же локальной сети, что и хост и другие устройства. Потому что мне нужно часто использовать nmap для сканирования MAC-адреса устройств в локальной сети. К сожалению, сканирование nmap работает только тогда, когда все эти машины находятся в одной подсети.
Я пробовал несколько способов, чтобы это произошло, но все потерпели неудачу. Хотя существует множество инструкций о том, как это сделать, кажется, что все они предназначены для Docker для Linux.
Например, очень подробная инструкция от stackoverflow: Docker на CentOS с мостом к Сеть LAN у меня тоже не работает.
Что я пробовал:
Маквлан:
похоже, что Docker для Windows 10 не поддерживает macvlan, потому что у меня нет возможности сделать сетевой адаптер Windows родительским.
Трубопровод:
который работает только в системе Linux, но я использую Windows 10.
Измените bip из daemon.json:
Я попытался установить для docker0 статический IP-адрес, тогда контейнер по-прежнему не может пинговать устройства в локальной сети. Я предполагаю, что это потому, что контейнер размещен в NAT, и изменение IP-адреса моста docker0 не сможет достичь моей цели.
Запустите образ с --net host:
который показывает ifconfig:
docker0 Link encap:Ethernet HWaddr 02:42:2d:b8:0b:7c
inet addr:172.17.0.1 Bcast:172.17.255.255 Mask:255.255.0.0
inet6 addr: fe80::42:2dff:feb8:b7c/64 Scope:Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:540 (540.0 B)
eth0 Link encap:Ethernet HWaddr 02:50:00:00:00:01
inet addr:192.168.65.3 Bcast:192.168.65.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:111 errors:0 dropped:0 overruns:0 frame:0
TX packets:147 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:9701 (9.7 KB) TX bytes:10384 (10.3 KB)
hvint0 Link encap:Ethernet HWaddr 00:15:5d:0d:52:27
inet addr:10.0.75.2 Bcast:0.0.0.0 Mask:255.255.255.0
inet6 addr: fe80::215:5dff:fe0d:5227/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:359819 errors:0 dropped:1303 overruns:0 frame:0
TX packets:1157 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:54740692 (54.7 MB) TX bytes:103676 (103.6 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:57 errors:0 dropped:0 overruns:0 frame:0
TX packets:57 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:5732 (5.7 KB) TX bytes:5732 (5.7 KB)
Он может пропинговать все в моей подсети, но IP все еще не из моей подсети, а 192.168.65.3.
Затем я пытался изменить IP-адрес eth0 на статический IP, отредактировав /etc/network/interface.d/eth0, после перезапуска сетевой службы IP-адрес eth0 был изменен на статический IP-адрес из моей подсети, но сеть больше не работает.
ПОЖАЛУЙСТА, если кто-нибудь здесь знает, как разместить контейнер Linux для Windows 10 в локальной сети так же, как хост.
Моя версия докера
Client:
Version: 18.03.1-ce
API version: 1.37
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:12:48 2018
OS/Arch: windows/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.03.1-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:22:38 2018
OS/Arch: linux/amd64
Experimental: false