Docker手動添加網(wǎng)橋方法詳解

本篇文章主要介紹了docker如何添加自定義網(wǎng)橋,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

docker服務進程在啟動的時候會生成一個名為docker0的網(wǎng)橋,容器默認都會掛載到該網(wǎng)橋下,但是我們可以通過添加docker啟動參數(shù)-b Birdge 或更改docker配置文件來選擇使用哪個網(wǎng)橋。

操作系統(tǒng):centos7

配置文件docker0網(wǎng)橋

service?docker?stop?//關閉docker服務?  ip?link?set?dev?docker0?down?//關閉docker0網(wǎng)橋??  ip?link?del?dev?docker0????//刪除docker0網(wǎng)橋

自定義網(wǎng)橋設置(/etc/sysconfig/network-scripts/配置文件cfg-br0文件)

DEVICE="br0"?  ONBOOT="yes"?  TYPE="Bridge"?  BOOTPROTO="static"?  IPADDR="10.10.10.20"?  NETMASK="255.255.255.0"?  GATEWAY="10.10.10.20"?  DEFROUTE="yes"?  NM_CONTROLLED="no"

重啟網(wǎng)絡服務

service?network?restart

查看網(wǎng)橋

[black@test?opt]$?brctl?show?  bridge?name???bridge?id????????STP?enabled???interfaces?  br0???????8000.32e7297502be????no????????  virbr0?????8000.000000000000????yes

接下來我們需要重新啟動docker,可以在啟動docker服務進程時使用以下兩種方式:

第一種:-b 參數(shù)指定網(wǎng)橋

[root@test?opt]#?docker?-d?-b?br0?  INFO[0000]?Listening?for?HTTP?on?unix?(/var/run/docker.sock)??  INFO[0000]?[graphdriver]?using?prior?storage?driver?"devicemapper"??  WARN[0000]?Running?modprobe?bridge?nf_nat?failed?with?message:?,?error:?exit?status?1??  INFO[0000]?Loading?containers:?start.???????????  ......?  INFO[0000]?Loading?containers:?done.???????????  INFO[0000]?Daemon?has?completed?initialization??????  INFO[0000]?Docker?daemon???commit=786b29d?execdriver=native-0.2?graphdriver=devicemapper?version=1.7.1

不知道為什么這樣啟動docker 服務進程會阻塞當前終端(︶︿︶),只好重新開一個終端,然后運行一個容器

[root@test?shell]#?docker?run?-ti?--rm?centos:latest?  [root@3c6874559411?/]#?ifconfig?  eth0???Link?encap:Ethernet?HWaddr?02:42:0A:0A:0A:01??  ?????inet?addr:10.10.10.1?Bcast:0.0.0.0?Mask:255.255.255.0?  ?????inet6?addr:?fe80::42:aff:fe0a:a01/64?Scope:Link?  ?????UP?BROADCAST?RUNNING?MULTICAST?MTU:1500?Metric:1?  ?????RX?packets:5?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:418?(418.0?b)?TX?bytes:508?(508.0?b)

容器成功使用br0網(wǎng)橋。

第二種:修改/etc/sysconfig/docker文件

我在進行這種操作的時候遇到了一點問題,我修改了/etc/sysconfig/docker文件

[root@test?opt]#?vi?/etc/sysconfig/docker??  #?/etc/sysconfig/docker?  #?  #?Other?arguments?to?pass?to?the?docker?daemon?process?  #?These?will?be?parsed?by?the?sysv?initscript?and?appended?  #?to?the?arguments?list?passed?to?docker?-d?  ?  other_args="-b?br0"

接著使用service docker start啟動docker服務,但是other_args并不生效,在centos7下servicer docker start仍然會采用systemctl start docker.service命令來運行,于是我就打開/usr/lib/systemd/system/docker.service查看

[root@test?opt]#?vi?/lib/systemd/system/docker.service??  [Unit]?  Description=Docker?Application?Container?Engine?  Documentation=https://docs.docker.com?  After=network.target?docker.socket?  Requires=docker.socket?  [Service]?  ExecStart=/usr/bin/docker?-d?-H?fd://?  MountFlags=slave?  LimitNOFILE=1048576?  LimitNPROC=1048576?  LimitCORE=infinity?  ?  [Install]?  WantedBy=multi-user.target

發(fā)現(xiàn)ExecStart一項并沒有運行參數(shù),于是將ExecStart改為/usr/bin/docker -d -b br0 -H fd://,運行docker服務,啟動一個容器發(fā)現(xiàn)能夠成功使用br0網(wǎng)橋。

在網(wǎng)上看到了一種更好的方法,將docker.service改為如下

[black@test?~]$?vi?/usr/lib/systemd/system/docker.service??  [Unit]?  Description=Docker?Application?Container?Engine?  Documentation=https://docs.docker.com?  After=network.target?docker.socket?  Requires=docker.socket?  [Service]?  EnvironmentFile=-/etc/sysconfig/docker?  ExecStart=/usr/bin/docker?-d?$other_args?-H?fd://?  MountFlags=slave?  LimitNOFILE=1048576?  LimitNPROC=1048576?  LimitCORE=infinity?  ?  [Install]?  WantedBy=multi-user.target

這個時候在other_args中添加的參數(shù)就有效了。

【相關推薦】

1. 配置文件

2. 配置文件

3.?配置文件

4.?配置文件

5.配置文件

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享