安裝Docker時,它會自動建立三個網絡,bridge(建立容器默認鏈接到此網絡)、 none 、hostlinux
網絡模式 | 簡介 |
Bridge | 此模式會爲每個容器分配、設置IP等,並將容器鏈接到一個docker0虛擬網橋,經過docker0網橋以及Iptables nat表配置與宿主機通訊。 |
Host | 容器將不會虛擬出本身的網卡,配置本身的IP等,而是使用宿主機的IP和端口。 |
Container | 建立的容器不會建立本身的網卡,配置本身的IP,而是和一個指定的容器共享IP、端口範圍。 |
None | 該模式關閉了容器的網絡功能。 |
自定義網絡 | 略 |
咱們在使用docker run建立Docker容器時,能夠用 --net 選項指定容器的網絡模式,Docker能夠有如下4種網絡模式:git
host模式:使用 --net=host 指定。
none模式:使用 --net=none 指定。
bridge模式:使用 --net=bridge 指定,默認設置。
container模式:使用 --net=container:NAME_or_ID 指定。docker
1>. 背景json
Docker 服務啓動後默認會建立一個 docker0 網橋(其上有一個 docker0 內部接口),它在內核層連通了其餘的物理或虛擬網卡,這就將全部容器和本地主機都放到同一個物理網絡。vim
Docker 默認指定了 docker0 接口 的 IP 地址和子網掩碼,讓主機和容器之間能夠經過網橋相互通訊,它還給出了 MTU(接口容許接收的最大傳輸單元),一般是 1500 Bytes,或宿主主機網絡路由上支持的默認值。這些值均可以在服務啓動的時候進行配置。centos
2.> 環境服務器
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@localhost ~]# docker version Client: Version: 1.13.1 API version: 1.26 Package version: docker-1.13.1-102.git7f2769b.el7.centos.x86_64 Go version: go1.10.3 Git commit: 7f2769b/1.13.1 Built: Mon Aug 5 15:09:42 2019 OS/Arch: linux/amd64 Server: Version: 1.13.1 API version: 1.26 (minimum version 1.12) Package version: docker-1.13.1-102.git7f2769b.el7.centos.x86_64 Go version: go1.10.3 Git commit: 7f2769b/1.13.1 Built: Mon Aug 5 15:09:42 2019 OS/Arch: linux/amd64 Experimental: false [root@localhost ~]#
3.> 修改默認docker0網橋網絡
[root@localhost ~]# ifconfig docker0 docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0 ether 02:42:52:5d:13:f2 txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@localhost ~]#
咱們能夠看到默認docker0的網段是172.xx.xx.xxui
修改文件 /etc/docker/daemon.json 添加內容 "bip": "ip/netmask" [ 切勿與宿主機同網段 ]spa
[root@localhost ~]# vim /etc/docker/daemon.json { "bip":"192.168.100.1/24" }
4.> 重啓服務器
[root@localhost ~]# systemctl restart docker.service
5.> 查看docker0的網段
[root@localhost ~]# ifconfig docker0 docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.100.1 netmask 255.255.255.0 broadcast 0.0.0.0 ether 02:42:52:5d:13:f2 txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@localhost ~]#
OK,到這裏咱們已經成功的修改了docker0的網橋.