最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker 配置固定IP及橋接的實(shí)現(xiàn)方法

 更新時(shí)間:2016年10月12日 11:29:43   投稿:lqh  
這篇文章主要介紹了Docker 配置固定IP和橋接的實(shí)現(xiàn)方法的相關(guān)資料,這里詳細(xì)介紹了Docker 的四種網(wǎng)絡(luò)模式及如何實(shí)現(xiàn)橋接的案例,需要的朋友可以參考下

docker默認(rèn)使用bridge模式,通過網(wǎng)橋連接到宿主機(jī),而容器內(nèi)部的ip則從網(wǎng)橋所在的ip段取未用的ip。這樣做一個(gè)不方便的地方在于容器內(nèi)部的ip不是固定的,想要連接容器時(shí)只能通過映射到宿主機(jī)的端口,因而有很多項(xiàng)目使用overlay來為docker提供網(wǎng)絡(luò)的配置,比如Pipework、Flannel、Kubernetes、Weave、opencontrail等。

想要使用overlay來為docker配置網(wǎng)絡(luò),需要首先了解下docker的網(wǎng)絡(luò)模式:

一、Docker的四種網(wǎng)絡(luò)模式

Docker在創(chuàng)建容器時(shí)有四種網(wǎng)絡(luò)模式,bridge為默認(rèn)不需要用--net去指定,其他三種模式需要在創(chuàng)建容器時(shí)使用--net去指定。

  1. bridge模式,使用--net=bridge指定,默認(rèn)設(shè)置。
  2. none模式,使用--net=none指定。
  3. host模式,使用--net=host指定。
  4. container模式,使用--net=container:容器名稱或ID指定。(如:--net=container:30b668ccb630)

bridge模式:docker網(wǎng)絡(luò)隔離基于網(wǎng)絡(luò)命名空間<Network Namespace>,在物理機(jī)上創(chuàng)建docker容器時(shí)會(huì)為每一個(gè)docker容器分配網(wǎng)絡(luò)命名空間,并且把容器IP橋接到物理機(jī)的虛擬網(wǎng)橋上。

none模式:此模式下創(chuàng)建容器是不會(huì)為容器配置任何網(wǎng)絡(luò)參數(shù)的,如:容器網(wǎng)卡、IP、通信路由等,全部需要自己去配置。

host模式:此模式創(chuàng)建的容器沒有自己獨(dú)立的網(wǎng)絡(luò)命名空間,是和物理機(jī)共享一個(gè)Network Namespace,并且共享物理機(jī)的所有端口與IP,并且這個(gè)模式認(rèn)為是不安全的。

container模式:此模式和host模式很類似,只是此模式創(chuàng)建容器共享的是其他容器的IP和端口而不是物理機(jī),此模式容器自身是不會(huì)配置網(wǎng)絡(luò)和端口,創(chuàng)建此模式容器進(jìn)去后,你會(huì)發(fā)現(xiàn)里邊的IP是你所指定的那個(gè)容器IP并且端口也是共享的,而且其它還是互相隔離的,如進(jìn)程等。

二、Docker配置自己的網(wǎng)橋

例子一、

1)、自定義新網(wǎng)橋

root@Docker:~# dpkg -l | grep bridge*    #查看是否有安裝brctl命令包
ii bridge-utils 1.5-6Ubuntu2  amd64    Utilities for configuring the Linux Ethernet bridge

root@Docker:~# apt-get install bridge-utils #安裝brctl命令包

root@Docker:~# docker -v          #docker版本

Docker version 1.5.0, build a8a31ef

root@Docker:~# ps -ef | grep docker     #正在運(yùn)行 
root   6834  1 0 16:28 ?    00:00:00 /usr/bin/docker -d

root@Docker:~# service docker stop     #停止


root@Docker:~# ifconfig | grep docker0   #docker默認(rèn)網(wǎng)橋
docker0 Link encap:以太網(wǎng) 硬件地址 56:84:7a:fe:97:99

root@Docker:~# ifconfig docker0 down    #停止docker默認(rèn)網(wǎng)橋

root@Docker:~# brctl show          #查看物理機(jī)上有哪些網(wǎng)橋

root@Docker:~# brctl delbr docker0     #刪除docker默認(rèn)網(wǎng)橋

root@Docker:~# brctl addbr docker_new0   #自定義網(wǎng)橋

root@Docker:~# ifconfig docker_new0 192.168.6.1 netmask 255.255.255.0  #給自定義網(wǎng)橋指定IP和子網(wǎng)

root@Docker:~# ifconfig | grep docker_new0 #查看發(fā)現(xiàn)自定義網(wǎng)橋已經(jīng)啟動(dòng)
docker_new0 Link encap:以太網(wǎng) 硬件地址 0a:5b:26:48:dc:04 
     inet 地址:192.168.6.1 廣播:192.168.6.255 掩碼:255.255.255.0

root@Docker:~# echo 'DOCKER_OPTS="-b=docker_new0"' >> /etc/default/docker #指定網(wǎng)橋?qū)懭雂ocker配置文件

root@Docker:~# service docker start     #啟動(dòng)docker

root@Docker:~# ps -ef | grep docker     #成功啟動(dòng),并且成功加載了docker_new0
root  21345  1 0 18:44 ?    00:00:00 /usr/bin/docker -d -b=docker_new0

root@Docker:~# brctl show          #查看當(dāng)前網(wǎng)橋下是否有容器連接
bridge name       bridge id       STP enabled  interfaces
docker_new0      8000.fa3ce276c3b9      no      

root@Docker:~# docker run -itd CentOS:centos6 /bin/bash         #創(chuàng)建容器測試

root@Docker:~# docker attach 7f8ff622237f                #進(jìn)入容器

[root@7f8ff622237f /]# ifconfig eth0 | grep addr             #容器IP已經(jīng)和自定義網(wǎng)橋一個(gè)網(wǎng)段,該容器IP為DHCP自動(dòng)分配,不屬于指定固定IP
eth0   Link encap:Ethernet HWaddr 02:42:C0:A8:06:02 
     inet addr:192.168.6.2 Bcast:0.0.0.0 Mask:255.255.255.0
     inet6 addr: fe80::42:c0ff:fea8:602/64 Scope:Link

root@Docker:~# brctl show          #該網(wǎng)橋上已經(jīng)連接著一個(gè)網(wǎng)絡(luò)設(shè)備了
bridge name        bridge id       STP enabled  interfaces
docker_new0      8000.fa3ce276c3b9      no     veth17f560a

注:veth設(shè)備是成雙成對出現(xiàn)的,一端是容器內(nèi)部命名eth0,一端是加入到網(wǎng)橋并命名的veth17f560a(通常命名為veth*),他們組成了一個(gè)數(shù)據(jù)傳輸通道,一端進(jìn)一端出,veth設(shè)備連接了兩個(gè)網(wǎng)絡(luò)設(shè)備    并實(shí)現(xiàn)了數(shù)據(jù)通信。


root@Docker:~# wget https://github.com/jpetazzo/pipework/archive/master.zip #下載 pipework

root@Docker:~# unzip master.zip      #解壓

root@Docker:~# cp pipework-master/pipework /usr/bin/           #拷貝pipework到 /usr/bin/下

root@Docker:~# chmod +x /usr/bin/pipework  #賦予該命令執(zhí)行權(quán)限

root@Docker:~# pipework docker_new0 -i eth1 $(docker run -itd -p 9197:80 centos:centos6 /bin/bash) 192.168.6.27/24@192.168.6.1 #創(chuàng)建容器,并指定固定IP
格式:pipework 網(wǎng)橋名 -i 指定在那塊網(wǎng)卡上配置 <容器名or容器ID> 指定容器內(nèi)IP/子網(wǎng)@網(wǎng)關(guān) 注:容器內(nèi)網(wǎng)關(guān)就是物理機(jī)網(wǎng)橋的IP       

 

root@Docker:~# docker attach 2966430e2dbe  #進(jìn)入新容器
 

[root@2966430e2dbe /]# ifconfig       #容器內(nèi)IP為指定的IP 192.168.6.27
eth0   Link encap:Ethernet HWaddr 02:42:C0:A8:06:05          
     inet addr:192.168.6.7 Bcast:0.0.0.0 Mask:255.255.255.0    #docker_new0網(wǎng)橋創(chuàng)建容器時(shí)DHCP分配的IP


eth1   Link encap:Ethernet HWaddr 82:DB:F7:A3:33:92 
     inet addr:192.168.6.27 Bcast:0.0.0.0 Mask:255.255.255.0    #pipework指定的固定IP,網(wǎng)橋還是docker_new0


[root@2966430e2dbe /]# route -n       #查看路由路徑
Kernel IP routing table
Destination  Gateway    Genmask    Flags Metric Ref  Use Iface
0.0.0.0    192.168.6.1  0.0.0.0    UG  0   0    0 eth0
192.168.6.0  0.0.0.0    255.255.255.0 U  0   0    0 eth0
192.168.6.0  0.0.0.0    255.255.255.0 U  0   0    0 eth1


[root@2966430e2dbe /]# ping www.linuxidc.com  #測試網(wǎng)絡(luò)
PING www.linuxidc.com (119.75.218.70) 56(84) bytes of data.
64 bytes from 119.75.218.70: icmp_seq=1 ttl=127 time=3.98 ms
64 bytes from 119.75.218.70: icmp_seq=2 ttl=127 time=2.98 ms


[root@2966430e2dbe /]# netstat -anptu | grep 80               #容器內(nèi)80端口已經(jīng)開啟
tcp    0   0 :::80           :::*            LISTEN   -

root@Docker:~# telnet 192.168.6.27 80    #物理機(jī)上測試指定的IP是否和映射的端口等通信正常
Trying 192.168.6.27...
Connected to 192.168.6.27.
Escape character is '^]'.

root@Docker:~# iptables-save > iptables-rules #拷貝防火墻規(guī)則到本地文件

root@Docker:~# vi iptables-rules       #打開規(guī)則文件查看你會(huì)發(fā)現(xiàn)你物理機(jī)的防火墻自動(dòng)添加了很多條規(guī)則,這個(gè)是容器到網(wǎng)橋到本地網(wǎng)卡到公網(wǎng)的地址轉(zhuǎn)換通信規(guī)則

例子二:

首先,配置一個(gè)用于創(chuàng)建container interface的網(wǎng)橋,可以使用ovs,也可以使用Linux bridge,以Linux bridge為例:

br_name=docker
brctl addbr $br_name
ip addr add 192.168.33.2/24 dev $br_name
ip addr del 192.168.33.2/24 dev em1
ip link set $br_name up
brctl addif $br_name eth0

接著,可以啟動(dòng)容器了,注意用--net=none方式啟動(dòng):

# start new container
hostname='docker.test.com'
cid=$(docker run -d -i -h $hostname --net=none -t centos)
pid=$(docker inspect -f '{{.State.Pid}}' $cid)

下面,為該容器配置網(wǎng)絡(luò)namespace,并設(shè)置固定ip:

# set up netns
mkdir -p /var/run/netns
ln -s /proc/$pid/ns/net /var/run/netns/$pid
# set up bridge
ip link add q$pid type veth peer name r$pid
brctl addif $br_name q$pid
ip link set q$pid up
# set up docker interface
fixed_ip='192.168.33.3/24'
gateway='192.168.33.1'
ip link set r$pid netns $pid
ip netns exec $pid ip link set dev r$pid name eth0
ip netns exec $pid ip link set eth0 up
ip netns exec $pid ip addr add $fixed_ip dev eth0
ip netns exec $pid ip route add default via 192.168.33.1

這樣,容器的網(wǎng)絡(luò)就配置好了,如果容器內(nèi)部開啟了sshd服務(wù),通過192.168.33.3就可以直接ssh連接到容器,非常方便。上面的步驟比較長,可以借助pipework來為容器設(shè)置固定ip(除了設(shè)置IP,還封裝了配置網(wǎng)關(guān)、macvlan、vlan、dhcp等功能):

pipework docker0 be8365e3b2834 10.88.88.8/24

那么,當(dāng)容器需要?jiǎng)h除的時(shí)候,怎么清理網(wǎng)絡(luò)呢,其實(shí)也很簡單:

# stop and delete container
docker stop $cid
docker rm $cid
# delete docker's net namespace (also delete veth pair)
ip netns delete $pid

更多docker網(wǎng)絡(luò)的配置,可以參考官方手冊。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • 如何優(yōu)化Docker鏡像的大小詳解

    如何優(yōu)化Docker鏡像的大小詳解

    本文詳細(xì)介紹了Docker的定義和優(yōu)點(diǎn),以及如何通過優(yōu)化Docker鏡像來提高其輕量化和便攜性,通過使用輕量化基礎(chǔ)鏡像和多階段構(gòu)建,可以顯著減小Docker鏡像的大小,從而提高部署和運(yùn)行效率
    2025-03-03
  • Docker部署安裝Redash中文版的方法詳解

    Docker部署安裝Redash中文版的方法詳解

    這篇文章主要介紹了Docker部署安裝Redash中文版的方法詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • docker部署mysql 實(shí)現(xiàn)遠(yuǎn)程連接的示例代碼

    docker部署mysql 實(shí)現(xiàn)遠(yuǎn)程連接的示例代碼

    這篇文章主要介紹了docker部署mysql 實(shí)現(xiàn)遠(yuǎn)程連接的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • docker容器啟動(dòng)不起來的若干問題解決

    docker容器啟動(dòng)不起來的若干問題解決

    本文主要介紹了docker容器啟動(dòng)不起來的若干問題解決,文中通過圖文示例介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • docker?swarm快速部署redis分布式集群的詳細(xì)過程

    docker?swarm快速部署redis分布式集群的詳細(xì)過程

    這篇文章主要介紹了docker?swarm快速部署redis分布式集群,只需要通過docker-compose.yml文件和一個(gè)啟動(dòng)命令就完成redis分布式部署的方式,讓其分別部署在不同機(jī)器上,并實(shí)現(xiàn)集群搭建,需要的朋友可以參考下
    2022-10-10
  • Docker搭建持續(xù)集成平臺(tái)Jenkins的最簡教程分享

    Docker搭建持續(xù)集成平臺(tái)Jenkins的最簡教程分享

    Jenkins 是一個(gè)廣泛使用的開源持續(xù)集成工具,它能夠自動(dòng)化構(gòu)建、測試和部署軟件項(xiàng)目,本文我們將使用 Docker 搭建一個(gè)基于 Jenkins 的持續(xù)集成平臺(tái),感興趣的可以了解下
    2024-03-03
  • docker容器無法訪問外網(wǎng),但宿主機(jī)卻可以訪問的解決方案

    docker容器無法訪問外網(wǎng),但宿主機(jī)卻可以訪問的解決方案

    本文詳細(xì)介紹了Docker容器無法訪問外網(wǎng)的常見原因及其解決方法,包括檢查Docker服務(wù)狀態(tài)、網(wǎng)絡(luò)設(shè)置、宿主機(jī)網(wǎng)絡(luò)連接、防火墻設(shè)置、重建docker0網(wǎng)絡(luò)、開啟IP轉(zhuǎn)發(fā)功能、修改DNS設(shè)置以及使用--net=host模式等
    2024-11-11
  • docker nginx ssl設(shè)置的實(shí)現(xiàn)步驟

    docker nginx ssl設(shè)置的實(shí)現(xiàn)步驟

    本文主要介紹了docker nginx ssl設(shè)置的實(shí)現(xiàn)步驟,使用docker運(yùn)行nginx,配置代理,和ssl設(shè)置,進(jìn)行https訪問,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • docker修改容器網(wǎng)絡(luò)舉例詳解

    docker修改容器網(wǎng)絡(luò)舉例詳解

    這篇文章主要介紹了docker修改容器網(wǎng)絡(luò)的相關(guān)資料,并詳細(xì)解釋了每種模式的工作原理和使用場景,還提供了如何更改Docker網(wǎng)絡(luò)模式以實(shí)現(xiàn)容器直接連接到主機(jī)網(wǎng)絡(luò)的解決方案,需要的朋友可以參考下
    2025-03-03
  • 如何解決1130?-?Host?‘172.17.0.1‘?is?not?allowed?to?connect?to?this?MySQL?server的問題

    如何解決1130?-?Host?‘172.17.0.1‘?is?not?allowed?to?conne

    這篇文章主要介紹了如何解決1130?-?Host?‘172.17.0.1‘?is?not?allowed?to?connect?to?this?MySQL?server的問題,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-08-08

最新評(píng)論

吉林省| 东丽区| 鹰潭市| 怀仁县| 汉川市| 博爱县| 邹平县| 通河县| 金湖县| 视频| 谢通门县| 榆树市| 青海省| 巨鹿县| 锦屏县| 汤阴县| 杭锦旗| 延长县| 巩义市| 固镇县| 泗洪县| 鄂托克旗| 平塘县| 石台县| 岫岩| 宁陕县| 寿光市| 梅河口市| 海兴县| 浏阳市| 大厂| 五莲县| 运城市| 高陵县| 鄂尔多斯市| 嘉定区| 玉溪市| 淮北市| 开阳县| 礼泉县| 军事|