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

詳解docker容器分配靜態(tài)IP

 更新時間:2017年01月19日 09:59:46   作者:mosmith  
這篇文章主要介紹了詳解docker容器分配靜態(tài)IP,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

最近因為工作要求需要用學習使用docker,最后卡在了網(wǎng)絡配置這一塊。默認情況下啟動容器的時候,docker容器使用的是bridge策略比如:

docker run -ti ubuntu:latest /bin/bash

等效于

docker run -ti --net=bridge ubuntu:latest /bin/bash

 bridge策略下,docker容器自動為我們分配了一個IP地址,并連接到docker0的網(wǎng)橋上。但這里有一個問題,這個IP地址并不是靜態(tài)分配的,這對我們的對容器的實例的網(wǎng)絡管理造成一了些困難。這里筆者并不想直接給出解決方案,因為那樣子并沒有什么卵用,理解原理,一步一步踏實走才是。

相信看過docker介紹的讀者都知道docker是借助于cGroup和namespace技術來實現(xiàn)資源控制和隔離的。在開始之前讀者需要去看一下linux上namespace的使用,本文并不想帶入太多的其它不相關的主題。好了現(xiàn)在假設你已經(jīng)了解namespace了,那你肯定想知道docker在網(wǎng)絡上是怎么利用namespace來做手腳的。大致過程應該和下面的一致:(下面只是個人猜測,因為筆者并沒有太多時間去研究它的源碼)

1、創(chuàng)建一個Net Namespace  netns1。

2、創(chuàng)建一對veth,將peer加入到netns1,將別一端接入到網(wǎng)橋bridge0中。

3、為這兩個veth分配IP。

4、用netns1啟動容器中的程序比如/bin/bash。

可惜的是,docker run并沒有一個選項讓我們?nèi)ブ付ㄋ峙涞腎P,因為網(wǎng)絡的確是個大難題。那就得自己動手豐衣足食了。

從上面我們知道,docker在網(wǎng)絡這里用到了Net namespace,veth和網(wǎng)橋bridge。注意如果你意圖使用ip netns list去查看docker在啟動容器的時候使用了那個netns,你會失望地發(fā)現(xiàn)沒有對應netns。其實并不是沒有,而是docker為了掩蓋一些細節(jié),在做完初始化工作后,docker便將這個netns從/var/run/netns中刪除了,我們完全可以用下面的方式讓它打回原形:

ln -s /proc/${container's pid}/ns/net /var/run/netns/${the's name you want to display}
ip netns list

好了,現(xiàn)在說一下我們給容器分配靜態(tài)IP的思路:

1、用--net=none方式啟動容器,這樣容器有了自己的namespace(這一步我們無法干預的,so let it go!)

2、獲取容器的進程號PID,然后根據(jù)PID將它的Net namespace打回原型。

3、創(chuàng)建一個bridge0,用brctl工具(可以通過安裝bridge-utils工具來實現(xiàn))。

4、創(chuàng)建一對veth:vethBridge,vethContainer,將peer端vethContainer加入到窗口的Net namespace中,將vethBridge接入到bridge0中:brctl add...

5、設置vethContainer的IP。

6、重啟容器的network service。

下面以我機器為例(deepin 2015 kernel 4.5.0)

1、 啟動容器:

2、獲取容器的進程號:

3、根據(jù)進程號將容器的Net namespace打回原型:

4、創(chuàng)建網(wǎng)橋bridge0

5、創(chuàng)建veth,配置對應的veth,最后重啟容器的network service

6、在容器中可以看到靜態(tài)分配的IP: 192.168.9.10

注意,現(xiàn)在容器還不能與主機通信,因為主機沒有到bridge的設備,如果需要和主機進行通信的話可以添加一對veth,將一端接入bridge。如果容器需要我外部通信的話,可以通過啟用內(nèi)核轉(zhuǎn)發(fā),并在iptables中添加相應的轉(zhuǎn)發(fā)規(guī)則。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • seata docker 高可用部署的詳細介紹

    seata docker 高可用部署的詳細介紹

    這篇文章主要介紹了seata docker 高可用部署的相關知識,通過相關配置文件實現(xiàn)高可用需要依賴注冊中心,配置中心,數(shù)據(jù)庫,需要的朋友可以參考下
    2021-07-07
  • 使用Conda環(huán)境創(chuàng)建Docker鏡像的完整步驟指南

    使用Conda環(huán)境創(chuàng)建Docker鏡像的完整步驟指南

    Docker是實現(xiàn)容器化的主流工具之一,而Conda作為科學計算和Python的包管理器,與Docker的結合能為開發(fā)者提供高度靈活、易于管理的開發(fā)環(huán)境,這篇文章主要介紹了使用Conda環(huán)境創(chuàng)建Docker鏡像的完整步驟,需要的朋友可以參考下
    2025-03-03
  • 部署OceanBase-ce全過程

    部署OceanBase-ce全過程

    這篇文章主要介紹了部署OceanBase-ce全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • IDEA 通過docker插件發(fā)布springboot項目的詳細教程

    IDEA 通過docker插件發(fā)布springboot項目的詳細教程

    這篇文章主要介紹了IDEA 通過docker插件發(fā)布springboot項目的詳細教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • kali安裝docker及搭建漏洞環(huán)境的詳細教程

    kali安裝docker及搭建漏洞環(huán)境的詳細教程

    Docker?是一個開源的應用容器引擎,讓開發(fā)者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的Linux機器上,也可以實現(xiàn)虛擬化,本文重點給大家介紹kali安裝docker及搭建漏洞環(huán)境的過程,感興趣的朋友一起看看吧
    2022-05-05
  • Docker安裝pypiserver私服的方法步驟

    Docker安裝pypiserver私服的方法步驟

    本文主要介紹了Docker安裝pypiserver私服的方法步驟,通過Docker安裝,可以方便地創(chuàng)建私有包倉庫,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • Docker swarm如何通過docker-compose部署應用

    Docker swarm如何通過docker-compose部署應用

    這篇文章主要介紹了Docker swarm如何通過docker-compose部署應用問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • docker的基本使用及使如何用Docker 運行D435i

    docker的基本使用及使如何用Docker 運行D435i

    這篇文章主要介紹了docker的基本使用及使如何用Docker 運行D435i,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • 使用Docker多階段構建來減小鏡像大小的方法

    使用Docker多階段構建來減小鏡像大小的方法

    這篇文章主要介紹了使用Docker多階段構建來減小鏡像大小的方法,適用于需要在 Dockerfile 中構建程式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Docker容器的創(chuàng)建、啟動、和停止的方法

    Docker容器的創(chuàng)建、啟動、和停止的方法

    這篇文章主要介紹了Docker容器的創(chuàng)建、啟動、和停止的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12

最新評論

洛南县| 西乡县| 读书| 搜索| 张家界市| 陆丰市| 大埔区| 化德县| 鹤岗市| 菏泽市| 泰兴市| 大同县| 韩城市| 蓝山县| 金湖县| 东乡| 德昌县| 甘肃省| 行唐县| 辽阳县| 灌阳县| 土默特右旗| 田东县| 平泉县| 封丘县| 陕西省| 天柱县| 神木县| 石门县| 乐都县| 大埔区| 广东省| 库伦旗| 洛南县| 安义县| 黑山县| 通海县| 隆子县| 惠来县| 崇左市| 大兴区|