Docker 網路工作原理詳解

2022-10-03 10:03:10 字數 1923 閱讀 2412

docker 網路工作原理

當docker server也就是docker daemon啟動時,會自動建立乙個名字是docker0的bridge,每當docker建立乙個container時,會在主機上面建立乙個名字是veth*的ethernet 埠,並把這個eth*加入到docker0的bridge,在container中會自動建立乙個名字是eth0的ethernet埠,這個eth0和veth*會形成乙個類似管道的對,一一對應。

配置dns

docker是如何分配每個container的hostname和dns配置的,可以通過在contain中mount命令看出一些東西:

mount

.../dev/disk/by-uuid/5f3d0920-98a8-434a-9c02-8163dccf6c62 on /etc/resolv.conf type ext4 (rw,relatime,errors=remount-ro,data=ordered)

/dev/disk/by-uuid/5f3d0920-98awdwgqlcpy8-434a-9c02-8163dccf6c62 on /etc/hostname type ext4 (rw,relatime,errors=remount-ro,data=ordered)

/dev/disk/by-uuid/5f3d0920-98a8-434a-9c02-8163dccf6c62 on /etc/hosts type ext4 (rw,relatime,errors=remount-ro,data=ordered)

...docker run的-h 可以配置container的hostname,可以通過-h hostname或者--hostname=hostname來配置,docker會把hostname寫入/etc/hostnamewdwgqlcpy

例如:xiaogang@ubuntu:~/shadowsocks$ sudo docker run -t -i --hostname ubuu --rm ubuntu:14.04 /bin/bash

root@ubuu:/# cat /etc/hostname

ubuu

--link=conntainer_nameorid:alias,通過這個選項會在/etc/hosts中新增乙個alias程式設計客棧,指向container_nameorid, 無需知道具體的ip位址,可以直接使用alias代替。

例如:--dns=ip_address, 會在/etc/resolv.conf的server標籤中新增乙個ip_address

--dns-search=domain,會在/etc/resolv.conf的search標籤中新增乙個domain,如果乙個example.com新增到search標籤中,當container需要查詢乙個host的ip時,host.example.com同時也會被查詢。

container中的/etc/resolv.conf是從主機中的/etc/resolv.conf拷貝而來,只不過是把主機本地的nameserver過濾掉,如果過濾之後沒有任何的nameserver,docker會把google公共nameserver,8.8.8.8和8.8.4.4加入namerserver中。當主機的resolv.conf修改之後會通知container修改

contain程式設計客棧er之間的通訊和container和外部之間的通訊

1.需要設定ip_forward系統引數,必須設定為1

$ sysctl net.ipv4.con

net.ipv4.conf.all.forwarding = 0

$ sysctl net.ipv4.conf.all.forwarding=1

$ sysctl net.ipv4.conf.all.forwarding

net.ipv4.conf.all.forwarding = 1

2.需要設定iptables,允許它們之間的通訊

本文標題: docker 網路工作原理詳解

本文位址:

Docker的網路工作原理

當docker server也就是docker daemon啟動時,會自動建立乙個名字是docker0的bridge,每當docker建立乙個container時,會在主機上面建立乙個名字是veth 的ethernet 埠,並把這個eth 加入到docker0的bridge,在container中會...

Docker網路詳解

先關閉docker sudo service docker stop 關閉網橋docker0 新增自己的網橋bridge0 sudo ifconfig docker0 down sudo brctl addbr bridge0 sudo ifconfig bridge0 192.168.227.1 ...

Docker網路詳解

docker使用linux橋接,在主機虛擬乙個docker0網路介面,在主機中執行命令檢視 list host bridges sudo brctl show bridge name bridge idstp enabled inte ces docker0 8000.000000000000 no...