本篇文章主要介紹了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.配置文件