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ò),擁有完全的本地主機(jī)接口訪問權(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下安裝Mongo4.2及客戶端工具連接Mongo
這篇文章主要介紹了Docker下安裝Mongo4.2和客戶端工具連接Mongo數(shù)據(jù)庫的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-01-01Docker網(wǎng)絡(luò)之單host網(wǎng)絡(luò)及使用案例
本文重點給大家講解Docker單主機(jī)網(wǎng)絡(luò)的相關(guān)知識及使用案例,重點是使用案例,感興趣的朋友一起看看吧2017-08-08Docker?AIGC等大模型深度學(xué)習(xí)環(huán)境搭建步驟最新詳細(xì)版
這篇文章主要介紹了Docker?AIGC等大模型深度學(xué)習(xí)環(huán)境搭建步驟最新詳細(xì)版,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05Docker?安裝Redis?無法使用配置文件設(shè)置密碼問題及解決方法
最近開發(fā)需要使用各種組件,如果都到開發(fā)機(jī)上安裝,會占用電腦資源較多,所以使用docker容器來安裝這些組件,這篇文章主要介紹了Docker安裝Redis無法使用配置文件設(shè)置密碼問題,需要的朋友可以參考下2023-08-08docker運行nginx容器并掛載數(shù)據(jù)卷
本文主要介紹了docker運行nginx容器,并通過掛載目錄將容器與宿主機(jī)的數(shù)據(jù)進(jìn)行共享和統(tǒng)一管理,具有一定的參考價值,感興趣的可以了解一下2025-03-03