一、容器網(wǎng)絡(luò)管理
容器網(wǎng)絡(luò)主要用于容器和容器之間、容器與外網(wǎng)、容器和宿主機(jī)的通信和連接。
1.1查看容器網(wǎng)絡(luò)
docker network ls [OPTIONS]
參數(shù) | 命令 |
---|---|
-f | 過濾條件 |
-format string | 格式化打印結(jié)果 |
–no-trunc | 不縮略顯示 |
-q | 只顯示網(wǎng)絡(luò)號 |
1.2創(chuàng)建容器網(wǎng)絡(luò)
docker network create [OPTIONS] NETWORK(名字)
參數(shù) | 命令 |
---|---|
-d | 指定網(wǎng)絡(luò)格式 |
–subnet strings | 指定子網(wǎng)網(wǎng)段 |
–ip-range strings | 指定容器的IP范圍 |
–gateway strings | 子網(wǎng)的IPV4或者IPV6 |
創(chuàng)建一個容器網(wǎng)絡(luò),命名為test-bridge,其中為橋接模式
docker network create -d bridge test-bridge
1.3 刪除容器網(wǎng)絡(luò)
docker network rm <你容器網(wǎng)絡(luò)的名字>
docker network ls
docker network rm test-bridge
docker network ls
1.4 容器網(wǎng)絡(luò)詳細(xì)信息
docker network inspect [OPTIONS]
參數(shù) | 命令 |
---|---|
-format string | 格式化打印結(jié)果 |
docker network inspect none
1.5 配置容器網(wǎng)絡(luò)
基本格式
docker run/creat --network NETWORK
啟動
docker run -it -d \
--network=host \
centos /bin/bash
然后查看網(wǎng)絡(luò)格式
docker inspect <進(jìn)程號> | grep NetworkMode
如果沒有指定默認(rèn)會使用橋接(bridge)模式進(jìn)行連接
1.6 斷開容器網(wǎng)絡(luò)連接
連接:docker network connect [OPTIONS] NETWORKID CONTAINER
斷開:docker network disconnect [OPTIONS] NETWORKID CONTAINER
例子,創(chuàng)建一個實列
docker run -it -d \
--network=host \
centos /bin/bash
先停止我們的容器
docker stop f2
去看我們NETWORK 的ID,然后在后面斷開網(wǎng)絡(luò)的時候,就直接輸入,要斷開的網(wǎng)絡(luò)ID
docker network ls
docker network disconnect 5e77(NETWORKID) f2(容器進(jìn)程號)
再去連接我們的none網(wǎng)絡(luò)
docker network connect 5707(NETWORKID) f2(容器進(jìn)程號)
二、none網(wǎng)絡(luò)
none的話就是什么都沒有的網(wǎng)絡(luò),在這個模式下,docker會擁有自己的網(wǎng)絡(luò)空間,但是不會為docker進(jìn)行任何的網(wǎng)絡(luò)配置,也就是說除了本地接口外,沒有任何的網(wǎng)卡、IP、路由等信息。
創(chuàng)建一個默認(rèn)網(wǎng)絡(luò)模式下的BusyBox
docker run --rm -it \
--name test-default \
busybox
ip a
可以看到docker容器分配的ip地址
我們再去ping一下外部容器
ping -c 3 wwww.baidu.com
可以看到已經(jīng)分配的ip地址
然后我們再來看設(shè)置為none
docker run --rm -it \
--name test-none \
--network=none \
busybox
ip a
很清楚的可以看到我們沒有分配了
三、host網(wǎng)絡(luò)
創(chuàng)建一個host網(wǎng)絡(luò)模式下的web應(yīng)用
docker run -it -d --name test-host --network=host nginx
docker inspect test-host
再去查看我們80端口的狀態(tài)
ss -anptu | grep 80
curl -I 172.20.10.4(ip addr 查看)
四、bridge網(wǎng)絡(luò)
在bridge模式下,我們會創(chuàng)建一個虛擬網(wǎng)橋Docker0,附加在其他的網(wǎng)卡上面可以自動轉(zhuǎn)發(fā)包,將其中一個接口eth0,另外一個接口veth放置宿主機(jī)的命令空間,同時,守護(hù)進(jìn)程還會從網(wǎng)橋的私有地址分配一個IP地址和子網(wǎng)給容器
先去下載我們的網(wǎng)橋管理工具
apt install -y bridge-utils
brctl show
下面我們再來創(chuàng)建一個bridge的容器
docker run -it -d --name test-nginx --network=bridge -p 8000:80 nginx
在這里我們可以看到Docker0上面掛載了網(wǎng)絡(luò)接口,下面我們再來看一個busybox的容器
docker run -it -d --name test-busybox --network=bridge busybox
brctl show
下面我們再來看一個例子
brctl show
docker run -d httpd
brctl show
我們再進(jìn)去看看網(wǎng)卡設(shè)置
docker ps
docker exec -it 9720[剛剛的進(jìn)程id] bash
第一種:
ip addr/ifconfig【這個好像看不了】
apt-get update
apt-get install net-tools
ifconfig
第二種:
ctrl+p+q
【我用這個看的】
docker inspect 9720
然后退出再去看我們網(wǎng)橋的配置
docker network inspect bridge
可以看到是一樣de!
五、container網(wǎng)絡(luò)
container網(wǎng)絡(luò)是一種比較特別的網(wǎng)絡(luò)模式,這個模式讓指定創(chuàng)建的容器和已經(jīng)存在的容器共享一個存儲空間,新建的容器沒有自己的網(wǎng)卡、IP地址等,而是和一個指定ip的容器共享IP地址、端口號。這兩個容器之間不存在網(wǎng)絡(luò)隔離,而這兩個容器與宿主機(jī)還有其他機(jī)器存在網(wǎng)路隔離。
創(chuàng)建一個普通的容器
docker run -it --name test1 busybox
ip a
crtl+p+q(不要直接退出了)
然后我們再去創(chuàng)建一個container的容器
docker run -it --name test-container --network=container:test1 busybox
ip a
這樣就可以看到我們兩個容器所使用的網(wǎng)絡(luò)就是一樣的啦
docker ps
六、容器連接外部網(wǎng)絡(luò)
其實在我們的虛擬機(jī)上,我們是可以直接聯(lián)通外部的網(wǎng)絡(luò)的
我們再去看我們的容器內(nèi)部網(wǎng)絡(luò)連通情況
docker run -it busybox
ping -c 3 www.bing.com
可以看到默認(rèn)情況下我們是可以訪問外部網(wǎng)絡(luò)(出容器以外的網(wǎng)絡(luò))的
下面我們可以通過
sudo su【管理員模式下】
iptables -t nat -S
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
其含義是: 如果網(wǎng)橋docker0收到來自172.17.0.0/16網(wǎng)段的外出包,把它交給MASQUERADE處理。而MASQUERADE的處理方式是將包的源地址替換成host的地址發(fā)送出去,即做了一次網(wǎng)絡(luò)地址轉(zhuǎn)換 (NAT)
下面我們再來看看是怎么轉(zhuǎn)換的
【路由表】
ip r
我們是通過ens33發(fā)出的,所以我們?nèi)ケO(jiān)聽下ens33和docker0上的情況
tcpdump -i ens33 -n icmp
開另外一個端口
ping -c 3 www.bing.com
tcpdump -i docker0 -n icmp
開另外一個端口并進(jìn)入容器
docker attch 【暫停端口號】
ping -c 3 www.bing.com
七、多節(jié)點(diǎn)網(wǎng)絡(luò)
ip addr
小唐就用三臺電腦來做一個示范吧
機(jī)器IP | 說明 |
---|---|
192.168.2.106 | 主節(jié)點(diǎn)(xiaotang0711) |
192.168.2.100 | datanode(qiuyb) |
192.168.2.102 | datanode(root-u) |
主節(jié)點(diǎn)
設(shè)置我們的主節(jié)點(diǎn)
docker swarm init --advertise-addr=<IP-ADDRESS-OF-MANAGER>
docker swarm init --advertise-addr=192.168.2.106
在去查看
docker node ls
再去查看我們節(jié)點(diǎn)的狀態(tài)
docker node inspect ffu
加入主節(jié)點(diǎn)
docker swarm join-token manager
子節(jié)點(diǎn)
將我們上面所生成的放到節(jié)點(diǎn)機(jī)中
在每一個子節(jié)點(diǎn)中,輸入主節(jié)點(diǎn)的類容
docker swarm join --token SWMTKN-1-0ktmburrukg72jsyri177tlpk4i8ftkatanwcrlqshfn67ex6r-7b448j9aihy08u3b6kn0z2cdx 192.168.2.106:2377
降級
docker node inspect ffu
如果 做錯了,請在當(dāng)前機(jī)器退出節(jié)點(diǎn)設(shè)置
docker swarm leave --force
查看swrm集群中的節(jié)點(diǎn)
docker node ls
脫離節(jié)點(diǎn)(在對應(yīng)節(jié)點(diǎn)處執(zhí)行)
docker swarm leave
刪除脫離節(jié)點(diǎn)【對于manager需要先將節(jié)點(diǎn)降為worker節(jié)點(diǎn)才能刪除】
docker node rm XXX(編號)
7.1創(chuàng)建Overlay網(wǎng)絡(luò)
同步swarm節(jié)點(diǎn)
docker network create -d overlay mynet
docker service ps test
在主節(jié)點(diǎn)和分節(jié)點(diǎn)上同時運(yùn)行
docker service create --network mynet --name test --replicas 2 busybox ping 8.8.8.8
【進(jìn)入容器】
docker ps
在主節(jié)點(diǎn)和分節(jié)點(diǎn)上同時運(yùn)行(注意主節(jié)點(diǎn)子節(jié)點(diǎn)他們的容器id不一樣)
docker container exec -it 57f sh
主節(jié)點(diǎn)
分節(jié)點(diǎn)
互相ping
ping 10.0.1.3[去另外一臺主機(jī)的ip addr 看]
ping www.baidu.com
7.2創(chuàng)建Macvlan網(wǎng)絡(luò)
主節(jié)點(diǎn)
docker network create -d macvlan --subnet 192.168.2.106/24[你自己的ip] --gateway 192.168.2.106[你自己的getway] -o parent=ens33 mac-test
另外一臺文章來源:http://www.zghlxwxcb.cn/news/detail-426487.html
docker network create -d macvlan \
--subnet 192.168.2.106/24 \
--gateway 192.168.2.106 \
-o parent=ens33 mac-test
再進(jìn)入兩個主機(jī)
再去看ip addr
然后我們就可以看到我們節(jié)點(diǎn)互通啦?。。?span toymoban-style="hidden">文章來源地址http://www.zghlxwxcb.cn/news/detail-426487.html
到了這里,關(guān)于Ubantu docker學(xué)習(xí)筆記(七)容器網(wǎng)絡(luò)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!