Docker 手動配置容器網(wǎng)絡(luò)實例詳解
Docker 手動配置容器網(wǎng)絡(luò)
docker容器的網(wǎng)絡(luò)是net命名空間與虛擬設(shè)備的結(jié)合,容器在啟動時會創(chuàng)建一對虛擬接口veth pair,這一對接口分別放到本地和容器中,在本地的veth會被分配類似vethxxxx的名稱并被橋接到指定網(wǎng)橋的上(默認(rèn)為docker0),可以通過brctl show命令查看網(wǎng)橋上掛載的接口,在容器中的veth會從網(wǎng)橋獲取一個未使用地址,該veth的名稱會被更改為eth0并配置默認(rèn)路由到vethxxxx,docker允許在啟動容器的時候通過--net參數(shù)指定不同的網(wǎng)絡(luò)類型。
--net=bridge:默認(rèn)值,橋接到默認(rèn)的網(wǎng)橋。
--net=host:不將容器網(wǎng)絡(luò)放到隔離的namespace,此時docker不會容器化容器內(nèi)的網(wǎng)絡(luò),這樣創(chuàng)建出來的容器使用的是本地的網(wǎng)絡(luò),擁有完全的本地主機接口訪問權(quán)限。
--net=contianer:name_or_id:使用一個已經(jīng)存在的容器的網(wǎng)絡(luò)棧,共享已存在容器的ip地址和端口等網(wǎng)絡(luò)資源。
--net=none:將新容器放到隔離的網(wǎng)絡(luò)棧中,不進(jìn)行網(wǎng)絡(luò)配置,我們?yōu)槿萜髋渲镁W(wǎng)絡(luò)需要指定該項。
我的環(huán)境 :操作系統(tǒng)---centos7,Docker版本---1.7,基礎(chǔ)鏡像---centos-6-x86_64.tar.gz
1. 啟動容器
[black@test ~]$ docker run -it --rm --name=mynetwork --net=none centos:latest /bin/bash
在容器中查看網(wǎng)絡(luò)設(shè)置,可以發(fā)現(xiàn)只有本地環(huán)回接口lo
[root@99abaecd79ab /]# ifconfig
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:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
2. 為容器創(chuàng)建net命名空間
[black@test ~]$ PID=$(docker inspect -f '{{.State.Pid}}' mynetwork)
[black@test ~]$ sudo mkdir -p /var/run/netns
[black@test ~]$ sudo ln -s /proc/$PID/ns/net /var/run/netns/$PID
3. 創(chuàng)建一對veth接口A和B,綁定A到自定義的網(wǎng)橋br0
[black@test ~]$ sudo ip link add A type veth peer name B [black@test ~]$ sudo brctl addif br0 A [black@test ~]$ sudo ip link set A up
4. 將B放入容器中,命名為eth0,啟動并配置ip與默認(rèn)網(wǎng)關(guān)
[black@test ~]$ sudo ip link set B netns $PID [black@test ~]$ sudo ip netns exec $PID ip link set dev B name eth0 [black@test ~]$ sudo ip netns exec $PID ip link set eth0 up [black@test ~]$ sudo ip netns exec $PID ip addr add 10.10.10.25/24 dev eth0 //ip與br0在同一網(wǎng)段中 [black@test ~]$ sudo ip netns exec $PID ip route add default via 10.10.10.10.1
在容器中查看容器的網(wǎng)絡(luò)設(shè)置如下
[root@affbcb8747eb /]# ifconfig
eth0 Link encap:Ethernet Wadded D2:27:3D:9F:E8:AA
inet addr:10.10.10.25 Bcast:0.0.0.0 Mask:255.255.255.0
inet6 addr: fe80::d027:3dff:fe9f:e8aa/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:648 (648.0 b) TX bytes:648 (648.0 b)
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:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持,
相關(guān)文章
用Docker搭建nextcloud個人網(wǎng)盤教程
大家好,本篇文章主要講的是用Docker搭建nextcloud個人網(wǎng)盤教程,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2021-12-12
Docker搭建并啟動Logstash的實現(xiàn)方式
這篇文章主要介紹了Docker搭建并啟動Logstash的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
Docker 搭建私有倉庫(registry、harbor)
這篇文章主要介紹了Docker 搭建私有倉庫(registry、harbor),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06
Docker 數(shù)據(jù)卷權(quán)限實例詳解
這篇文章主要介紹了Docker 數(shù)據(jù)卷權(quán)限實例詳解的相關(guān)資料,在運行Docker 容器的時候需要添加權(quán)限,這里就給大家舉例說明如何實現(xiàn),需要的朋友可以參考下2016-11-11
Docker-compose一鍵部署gitlab中文版的方法步驟
這篇文章主要介紹了Docker-compose一鍵部署gitlab中文版的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12
關(guān)于docker清理Overlay2占用磁盤空間的問題(親測有效)
使用Docker過程中,長時間運行服務(wù)容器,導(dǎo)致不能進(jìn)行上傳文件等操作,今天通過本文給大家詳細(xì)介紹下docker清理Overlay2占用磁盤空間的相關(guān)知識,感興趣的朋友一起看看吧2022-03-03

