亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

最近因為工作要求需要用學(xué)習(xí)使用docker,最后卡在了網(wǎng)絡(luò)配置這一塊。默認情況下啟動容器的時候,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)絡(luò)管理造成一了些困難。這里筆者并不想直接給出解決方案,因為那樣子并沒有什么卵用,理解原理,一步一步踏實走才是。

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

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)絡(luò)的確是個大難題。那就得自己動手豐衣足食了。

從上面我們知道,docker在網(wǎng)絡(luò)這里用到了Net namespace,veth和網(wǎng)橋bridge。注意如果你意圖使用ip netns list去查看docker在啟動容器的時候使用了那個netns,你會失望地發(fā)現(xiàn)沒有對應(yīng)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(這一步我們無法干預(yù)的,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、設(shè)置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,配置對應(yīng)的veth,最后重啟容器的network service

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

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

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

相關(guān)文章

  • Docker容器數(shù)據(jù)卷原理及使用方法解析

    Docker容器數(shù)據(jù)卷原理及使用方法解析

    這篇文章主要介紹了Docker容器數(shù)據(jù)卷原理及使用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • 淺談關(guān)于Docker容器互聯(lián)的初步實踐

    淺談關(guān)于Docker容器互聯(lián)的初步實踐

    這篇文章主要介紹了淺談關(guān)于Docker容器互聯(lián)的初步實踐,本文介紹了使用網(wǎng)橋(bridge)來對容器進行互聯(lián),非常具有實用價值,需要的朋友可以參考下
    2018-10-10
  • 使用Docker部署Spring Boot項目的實現(xiàn)步驟

    使用Docker部署Spring Boot項目的實現(xiàn)步驟

    本文主要介紹了使用Docker部署Spring Boot項目的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • docker?system?prune命令使用示例詳解

    docker?system?prune命令使用示例詳解

    docker system prune是一個用于清理Docker系統(tǒng)資源的命令,它用于刪除未使用的數(shù)據(jù)(如未使用的鏡像、容器、網(wǎng)絡(luò)和存儲卷)以釋放磁盤空間,下面這篇文章主要給大家介紹了關(guān)于docker?system?prune命令使用示例的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • docker-compose之基本語法解讀

    docker-compose之基本語法解讀

    這篇文章主要介紹了docker-compose之基本語法解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 利用drone?ci自動化部署靜態(tài)博客的完整步驟

    利用drone?ci自動化部署靜態(tài)博客的完整步驟

    drone是基于容器的構(gòu)建服務(wù),配置簡單且免費,在 github上也有20Kstar,下面這篇文章主要給大家介紹了關(guān)于利用drone?ci自動化部署靜態(tài)博客的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • 詳解Docker中VLAN網(wǎng)絡(luò)模式的配置

    詳解Docker中VLAN網(wǎng)絡(luò)模式的配置

    在Docker應(yīng)用到生產(chǎn)環(huán)境的時候包括了原生Bridge NAT模式、LinuxBridge VLAN模式以及利用第三方的網(wǎng)絡(luò)方案這三種,這篇文章給大家詳細介紹了Docker中VLAN網(wǎng)絡(luò)模式的配置,有需要的朋友們下面來一起看看吧。
    2016-10-10
  • Docker搭建私有化倉庫的幾種方法

    Docker搭建私有化倉庫的幾種方法

    搭建 Docker 私有化倉庫是一個非常重要的實踐,它能夠幫助你安全地存儲和管理 Docker 鏡像,本文主要介紹了Docker搭建私有化倉庫的的幾種方法,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • Docker 網(wǎng)絡(luò)模式及配置方式

    Docker 網(wǎng)絡(luò)模式及配置方式

    這篇文章主要介紹了Docker 網(wǎng)絡(luò)模式及配置方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 關(guān)于Docker 刪除dead狀態(tài)的容器問題及解決方案

    關(guān)于Docker 刪除dead狀態(tài)的容器問題及解決方案

    這篇文章主要介紹了Docker 刪除dead狀態(tài)的容器,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05

最新評論