精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網(wǎng)站建設(shè)資訊

NEWS

網(wǎng)站建設(shè)資訊

Docker網(wǎng)絡(luò)管理

參考博客:http://www.apelearn.com/bbs/forum.php?mod=viewthread&tid=11589&highlight=docker

成都創(chuàng)新互聯(lián)公司專注于柯橋網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供柯橋營銷型網(wǎng)站建設(shè),柯橋網(wǎng)站制作、柯橋網(wǎng)頁設(shè)計、柯橋網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)公司服務(wù),打造柯橋網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供柯橋網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

一 四種網(wǎng)絡(luò)模式
1.host模式  使用docker run時使用--net=host指定docker使用的網(wǎng)絡(luò)實(shí)際上和宿主機(jī)一樣在容器內(nèi)看到的網(wǎng)卡ip是宿主機(jī)上的ip局限性例如容器開啟80端口宿主機(jī)也開啟80端口就會產(chǎn)生沖突。

[root@localhost ~]# docker run -it --rm --net=host centos_with_net_wget:daixuanlinux bash
[root@localhost /]# ifconfig
docker0: flags=4163  mtu 1500
        inet 172.17.42.1  netmask 255.255.0.0  broadcast 0.0.0.0
        inet6 fe80::a091:9eff:fe00:8ef8  prefixlen 64  scopeid 0x20
        ether 02:06:cb:61:4f:d6  txqueuelen 0  (Ethernet)
        RX packets 3341  bytes 213676 (208.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7699  bytes 11252108 (10.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
eth0: flags=4163  mtu 1500
        inet 112.65.140.132  netmask 255.255.255.248  broadcast 112.65.140.135

2.container模式  使用--net=container:container_id/container_name多個容器使用共同的網(wǎng)絡(luò)看到的ip是一樣的與510b828f4ca9的IP都是172.17.42.1

[root@localhost ~]# docker run -it --rm --net=container:510b828f4ca9 centos_with_net_wget:daixuanlinux bash
[root@localhost /]# ifconfig
docker0: flags=4163  mtu 1500
        inet 172.17.42.1  netmask 255.255.0.0  broadcast 0.0.0.0
        inet6 fe80::a091:9eff:fe00:8ef8  prefixlen 64  scopeid 0x20
        ether 00:00:00:00:00:00  txqueuelen 0  (Ethernet)
        RX packets 3341  bytes 213676 (208.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7699  bytes 11252108 (10.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
eth0: flags=4163  mtu 1500
        inet 112.65.140.132  netmask 255.255.255.248  broadcast 112.65.140.135

3.  none模式使用--net=none指定這種模式下不會配置任何網(wǎng)絡(luò)

[root@localhost ~]# docker run -it --rm --net=none centos_with_net_wget:daixuanlinux bash
[root@6db3a6e51687 /]# ifconfig
lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 0  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@6db3a6e51687 /]# ping www.baidu.com
ping: unknown host www.baidu.com

4.  bridge模式默認(rèn)模式類似vmware的nat模式,使用--net=bridge指定,默認(rèn)模式不用指定,就是這種網(wǎng)絡(luò)模式。這種模式會為每個容器分配一個獨(dú)立的Network Namespace。同一個宿主機(jī)上的所有容器會在同一個網(wǎng)段下相互之間是可以通信的。

[root@localhost ~]# docker run -it --rm  centos_with_net_wget:daixuanlinux bash
[root@663660abecbb /]# ifconfig
eth0: flags=4163  mtu 1500
        inet 172.17.0.28  netmask 255.255.0.0  broadcast 0.0.0.0
        inet6 fe80::42:acff:fe11:1c  prefixlen 64  scopeid 0x20
        ether 02:42:ac:11:00:1c  txqueuelen 0  (Ethernet)
        RX packets 3  bytes 238 (238.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4  bytes 328 (328.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 0  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@663660abecbb /]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.37) 56(84) bytes of data.
64 bytes from 14.215.177.37: icmp_seq=1 ttl=52 time=29.6 ms
^C64 bytes from 14.215.177.37: icmp_seq=2 ttl=52 time=29.9 ms

--- www.a.shifen.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 29.616/29.792/29.969/0.246 ms
[root@663660abecbb /]# exit
exit

二 docker 網(wǎng)橋

配置橋接網(wǎng)絡(luò)centos7
為了使本地網(wǎng)絡(luò)中的機(jī)器和Docker容器更方便的通信我們經(jīng)常會有將Docker容器配置到和主機(jī)同一網(wǎng)段的需求。這個需求其實(shí)很容易實(shí)現(xiàn)我們只要將Docker容器和宿主機(jī)的網(wǎng)卡橋接起來再給Docker容器配上IP就可以了。
安裝pipworkgit clone https://github.com/jpetazzo/pipework
cp ~/pipework/pipework /usr/local/bin/
開啟一個容器 docker run -itd --net=none --name aming123 centos  /bin/bash
pipework br0  aming123 172.7.15.201/24@172.7.15.107  #201為容器的ip@后面的ip為宿主機(jī)ip
brctl addif br0 eth0  #eth0為宿主機(jī)網(wǎng)卡這一步為把br0和eth0橋接起來
ip addr add 172.7.15.107/24 br0 #把107的ip綁定在br0上
docker exec -it aming123 /bin/bash #進(jìn)去后ifconfig查看就可以看到新添加的ip

centos6:
cd /etc/sysconfig/network-scripts/; cp ifcfg-eth0  ifcfg-br0
vi ifcfg-eth0 //增加BRIDGE=br0刪除IPADDR,NETMASK,GATEWAY,DNS1
vi ifcfg-br0//修改DEVICE為br0,Type為Bridge,把eth0的網(wǎng)絡(luò)設(shè)置設(shè)置到這里來
service network restart
安裝pipwork:  git clone https://github.com/jpetazzo/pipework 
cp ~/pipework/pipework /usr/local/bin/
開啟一個容器: docker run -itd --net=none --name aming123 centos  /bin/bash
rpm -Uvh rpm -Uvh https://repos.fedorapeople.org/openstack/EOL/openstack-grizzly/epel-6/iproute-2.6.32-130.el6ost.netns.2.x86_64.rpm #不安會報錯Object "netns" is unknown, try "ip help"
pipework br0  aming123 172.7.15.201/24
docker exec -it aming123 /bin/bash #進(jìn)去后ifconfig查看就可以看到新添加的ip


Docker網(wǎng)絡(luò)管理


bridge 模式是 Docker 默認(rèn)的網(wǎng)絡(luò)設(shè)置,此模式會為每一個容器分配 Network Namespace、設(shè)置 IP 等,并將一個主機(jī)上的 Docker 容器連接到一個虛擬網(wǎng)橋上。當(dāng) Docker server 啟動時,會在主機(jī)上創(chuàng)建一個名為 docker0 的虛擬網(wǎng)橋,此主機(jī)上啟動的 Docker 容器會連接到這個虛擬網(wǎng)橋上。虛擬網(wǎng)橋的工作方式和物理交換機(jī)類似,這樣主機(jī)上的所有容器就通過交換機(jī)連在了一個二層網(wǎng)絡(luò)中。接下來就要為容器分配 IP 了,Docker 會從 RFC1918 所定義的私有 IP 網(wǎng)段中,選擇一個和宿主機(jī)不同的IP地址和子網(wǎng)分配給 docker0,連接到 docker0 的容器就從這個子網(wǎng)中選擇一個未占用的 IP 使用。如一般 Docker 會使用 172.17.0.0/16 這個網(wǎng)段,并將 172.17.42.1/16 分配給 docker0 網(wǎng)橋(在主機(jī)上使用 ifconfig 命令是可以看到 docker0 的,可以認(rèn)為它是網(wǎng)橋的管理接口,在宿主機(jī)上作為一塊虛擬網(wǎng)卡使用)


2.1 列出當(dāng)前主機(jī)網(wǎng)橋

# brctl show

或者

# brctl show docker0

brctl 工具依賴bridge-utils 包


查看當(dāng)前 docker0 ip

# ifconfig docker0

或者

# ip addr show docker0


自定義 docker0 網(wǎng)橋的網(wǎng)段

默認(rèn)情況下 docker0 會分配172.1.42 或者192.168.42 這個網(wǎng)段。 
我們也可以手動更改這個網(wǎng)段為 192.168.10.0/24。 
要注意順序:

# /etc/init.d/docker stop                    #停掉docker服務(wù)

# ip link set dev docker0 down               #停掉網(wǎng)橋docker0

# ip addr add 192.168.10.1/24 dev docker0    #給docker0添加地址

# ip addr del 192.168.42.1/24 dev docker0    #刪除docker0原有的地址

# ip link set dev docker0 up                 #啟動網(wǎng)橋docker0

# /etc/init.d/docker start                   #啟動服務(wù)


自定義網(wǎng)橋

Docker網(wǎng)絡(luò)管理 
Docker完成以上網(wǎng)絡(luò)配置的過程大致是這樣的: 
1. 在主機(jī)上創(chuàng)建一對虛擬網(wǎng)卡veth pair設(shè)備。veth設(shè)備總是成對出現(xiàn)的,它們組成了一個數(shù)據(jù)的通道,數(shù)據(jù)從一個設(shè)備進(jìn)入,就會從另一個設(shè)備出來。因此,veth設(shè)備常用來連接兩個網(wǎng)絡(luò)設(shè)備。 
2. Docker將veth pair設(shè)備的一端放在新創(chuàng)建的容器中,并命名為eth0。另一端放在主機(jī)中,以veth75f9這樣類似的名字命名,并將這個網(wǎng)絡(luò)設(shè)備加入到docker0網(wǎng)橋中,可以通過brctl show命令查看。 
3. 從 docker0 子網(wǎng)中分配一個IP給容器使用,并設(shè)置docker0的IP地址為容器的默認(rèn)網(wǎng)關(guān)。

Docker 會嘗試尋找沒有被主機(jī)使用的 ip 段,盡管它適用于大多數(shù)情況下,但是它不是萬能的,有時候我們還是需要對 ip 進(jìn)一步規(guī)劃。在啟動 Docker 服務(wù)的時候,使用 -b BRIDGE 或 --bridge=BRIDGE 來指定使用的網(wǎng)橋,需要安裝 bridge-utils軟件包。

這里我們新建一個網(wǎng)橋 br0 作為 docker 的默認(rèn)網(wǎng)橋 基本步驟如下: 
1. 停止服務(wù)刪除舊網(wǎng)橋 
2. 創(chuàng)建自定義網(wǎng)橋 
3. 確認(rèn)新網(wǎng)橋并啟動 
4. 配置 docker 默認(rèn)網(wǎng)橋

停止服務(wù)刪除舊網(wǎng)橋


  • # service docker stop

  • # ip link set dev docker0 down

  • # brctl delbr docker0

創(chuàng)建新網(wǎng)橋br0


  • # brctl addbr br0

  • # ip addr add 192.168.100.1/24 dev br0

查看確認(rèn)新網(wǎng)橋并啟動


  • # ip addr show br0 或者 brctl show br0

  • # ip link set dev br0 up

配置 docker 服務(wù),默認(rèn)連接到 網(wǎng)橋br0 上 .并啟動docker


  • # echo 'DOCKER_OPTS="-b=br0"' >> /etc/default/docker

  • # service docker start

啟動 Docker 服務(wù)。 新建一個容器,可以看到它已經(jīng)橋接到了 br0 上。 
可以繼續(xù)用 brctl show 命令查看橋接的信息。另外,在容器中可以使用 ip addr 和 ip route 命令來查看 IP 地址配置和路由信息。

三 外部網(wǎng)絡(luò)訪問容器
1 使用centos鏡像新建一個容器,然后在該容器中安裝httpd服務(wù)并啟動

[root@localhost ~]# docker run -it centos_with_net_wget:daixuanlinux  bash
[root@0d76c137b3cc /]# yum install -y httpd
[root@0d76c137b3cc /]# /usr/sbin/httpd   //使用絕對路徑啟動httpd服務(wù)
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.29. Set the 'ServerName' direc  tive globally to suppress this message
[root@0d76c137b3cc /]# ps aux | grep httpd    //httpd服務(wù)已經(jīng)啟動
root        53  0.0  0.6 221852  3456 ?        Ss   05:45   0:00 /usr/sbin/httpd
apache      54  0.0  0.5 221852  2600 ?        S    05:45   0:00 /usr/sbin/httpd
apache      55  0.0  0.5 221852  2600 ?        S    05:45   0:00 /usr/sbin/httpd
apache      56  0.0  0.5 221852  2600 ?        S    05:45   0:00 /usr/sbin/httpd
apache      57  0.0  0.5 221852  2600 ?        S    05:45   0:00 /usr/sbin/httpd
apache      58  0.0  0.5 221852  2600 ?        S    05:45   0:00 /usr/sbin/httpd
root        60  0.0  0.1   8984   768 ?        S+   05:45   0:00 grep --color=auto httpd
[root@0d76c137b3cc /]# netstat -lnp | grep 80  //監(jiān)聽了80端口
tcp6       0      0 :::80                   :::*                    LISTEN      53/httpd
[root@0d76c137b3cc /]# exit
exit
[root@localhost ~]# docker ps -a
CONTAINER ID  IMAGE   COMMAND   CREATED    STATUS         PORTS             NAMES
0d76c137b3cc  centos_with_net_wget:daixuanlinux "bash"  14 minutes ago  Exited (130) About a minute ago   compassionate_goodall

2 把該容器導(dǎo)成一個新的鏡像centos_with_httpd

[root@localhost ~]# docker commit -m "centos_with_httpd" -a "daixuan" 0d76c137b3cc centos_with_httpd
9fa4d394e3b6855a9c395d8313c43945fb0c0b8ce8ac99b4c5c20e831df672c4
[root@localhost ~]# docker p_w_picpaths
REPOSITORY      TAG  IMAGE ID  CREATED    VIRTUAL SIZE
centos_with_httpd latest 9fa4d394e3b6 52 seconds ago   337.8 MB

3 再使用新鏡像創(chuàng)建容器并指定端口映射,網(wǎng)絡(luò)的映射是在啟動容器的過程中實(shí)現(xiàn)的

docker run -itd -p 5123:80 centos_with_httpd:latest bash  //-p 可以指定端口映射本例中將容器的80端口映射為本地的5123端口

docker exec -it container_id  bash 

啟動httpd   httpd -k start  或者使用絕對路徑啟動/usr/sbin/httpd
編輯1.html vi /var/www/html/1.html  隨便寫點(diǎn)東西例如daixuanlinux.com

退出該容器exit
測試 curl 127.0.0.1:5123/1.html 

[root@localhost ~]# docker run -itd -p 5123:80 centos_with_httpd:latest bash
754edd8655b86715e2f7b75db4f8503370960974b415ae6871f69f8c5bc2b12f
[root@localhost ~]# docker exec -it 754edd865 bash
[root@754edd8655b8 /]# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
[root@754edd8655b8 /]# /usr/sbin/httpd
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.30. Set the 'ServerName' directive globally to suppress this message
[root@754edd8655b8 /]# ps aux | grep httpd
root        29  0.0  0.6 221852  3436 ?        Ss   06:00   0:00 /usr/sbin/httpd
apache      30  0.0  0.5 221852  2600 ?        S    06:00   0:00 /usr/sbin/httpd
apache      31  0.0  0.5 221852  2600 ?        S    06:00   0:00 /usr/sbin/httpd
apache      32  0.0  0.5 221852  2600 ?        S    06:00   0:00 /usr/sbin/httpd
apache      33  0.0  0.5 221852  2600 ?        S    06:00   0:00
/usr/sbin/httpd
apache      34  0.0  0.5 221852  2600 ?        S    06:00   0:00 /usr/sbin/httpd
root        36  0.0  0.1   8984   772 ?        S+   06:00   0:00 grep --color=auto httpd

[root@754edd8655b8 /]# vi /var/www/html/1.html
添加:daixuanlinux.com
[root@754edd8655b8 /]# curl localhost/1.html
daixuanlinux.com
[root@754edd8655b8 /]# ^C
[root@754edd8655b8 /]# exit
exit
[root@localhost ~]# curl 112.65.140.132:5123/1.html //外部訪問5123轉(zhuǎn)到訪問容器的80端口
daixuanlinux.com
[root@localhost ~]# docker ps  //可以看到轉(zhuǎn)換規(guī)則:5123->80
CONTAINER ID   IMAGE      COMMAND    CREATED      STATUS      PORTS   NAMES
754edd8655b8  centos_with_httpd:latest  "bash"    9 minutes ago    Up 9 minutes   0.0.0.0:5123->80/tcp   mad_goodall

四 容器互聯(lián)
下載一個MySQL鏡像
docker pull mysql
新建一個容器命名為dbserver
docker run -it -d -p 13306:3306 --name dbserver mysql bash

在新建一個web容器并和db互聯(lián)
docker run -it -d -p 12308:80 --name web --link dbserver:db centos_with_httpdbash


文章標(biāo)題:Docker網(wǎng)絡(luò)管理
網(wǎng)頁URL:http://m.jcarcd.cn/article/podiji.html
主站蜘蛛池模板: 精品绿帽视频 | 区四区不卡视频 | 日本一黄一区区 | 精品无人区一区二 | 国产高清视频一区 | 97影院 | 成人精品视频免费看 | 午夜影视 | 日本一区二 | 日韩制服在线 | 午夜电影 | 区二区三区三 | 成人福利在线91 | 91网视频网 | 日本熟女视频 | 91免费福利 | 日本乱理伦片 | 福利精品视频导航 | 国产不卡在线免费 | 91人成亚洲高清 | 国产在在线免 | 国产精品秘蜜蕾丝袜 | 成人三级 | 精品国产电影在线 | 人兽你懂得网站 | 欧美一级黄 | 国产包皮精品 | 国产剧情片视须资 | 国产最新进 | 日本综合在线 | 国产精品观看免费 | 国产精品高清网站 | 国产伦理 | 97午夜理论 | 国产亚洲首页 | 99热在线精品7| 欧美日韩狠狠 | 欧美另类日韩成人 | 欧美中文综合在线 | 日韩精品福 | 午夜影院线4 |