跳到主要內容

docker (2)---存儲、網絡(利用docker容器上線靜態網站)

一、docker底層依賴的核心技術


1、命名空間 (Namespaces)


2、控制組 (Control Groups)


3、聯合文件系統 (Union File System)


4Linux 虛擬網絡支持:本地和容器內創建虛擬接口


(1) 命名空間(Namespaces):


實現了容器間資源的隔離,每個容器擁有自己獨立的命名空間 , 運行其中的應用就像是運行在獨立的操作系統中一樣 , 我們都可以看到文件系統,網卡等資源保證了容器之間互不影響,namesaces管理進程號 , 每個進程命名空間有一套自己的進程號管理方法 ,


程命名空間是一個父子關係的結構 , 子空間中的進程對於父空間是可見的。


(2) 控制組 (Control Groups) :


  控制組 (Control groups)--CGroups Linux 內核的一個特性 ,主要用來對共享資源進行隔離、限制、審計等 。cgroups 允許對於進程或進程組公平( 不公平 ) 的分配 CPU 時間、內存分配和 I/O 帶寬。


容器通過 cgroups 來得到所能夠管理資源的分配和使用。因此容器所獲得資源僅為所有系統資源的一個部分


1、資源限制 : 內存子系統為進程組設置內存使用上限,內存達到上限后再申請內存,就會發出 Out of Memory


2、 優先級 : 通過優先級讓一些組得到更多 CPU 等資源


3、 資源審計 : 用來統計系統上實際把多少資源用到適合的目的上 , 可以使用 cpuacct 子系統記錄某個進程組使用的 CPU 時間


4、 隔離 : 為組隔離名字空間 , 這樣一個組不會看到其他組的進程 .網絡連接和文件系統


5、 控制 : 掛起 . 恢復和啟動等操作


(3)聯合文件系統 (Union File System) :


  docker 中使用AUFS(another Union File System v2 版本以後的Advanced multi-layered Unification File System) 控製為每一個成員目錄設定只讀 / 讀寫 / 寫出權限 , 同時 AUFS 有一個類似分層的概念 , 對只讀權限的分支可以邏輯上進行增量的修改.


二、docker的存儲


docker兩種存儲資源類型:


1Data Volume (數據卷)


2Data Volume Dontainers --- 數據卷容器


(1) Data Volume (數據卷):


Data Volume 本質上是 Docker Host 文件系統中的目錄或文件,使用類似與 Linux 下對目錄或者文件進行 mount 操作。數據卷可以在容器之間共享和重用,對數據卷的更改會立馬生效,對數據卷的更新不會影響鏡像,卷會一直存在,直到沒有容器使用。


Data Volume(數據卷)的特點:


1Data Volume 是目錄或文件,而非沒有格式化的磁盤(塊設備)。


2、容器可以讀寫 volume 中的數據。


3volume 數據可以被永久的保存,即使使用它的容器已經銷毀。


 Data Volume 的使用:


1、在宿主機根目錄下創建一個目錄(數據卷)


 


2、啟動一個容器並將數據卷掛載到容器的目錄下


 


3、驗證  ( 持久化的需要映射目錄)


 


#


 


(2)Data Volume Dontainers --- 數據卷容器


數據卷容器就是一個普通的容器,只不過是專門用它提供數據卷供其他容器掛載使用


Data Volume Dontainers使用:


1、創建一個名為 dbdata 的數據卷,並在其中創建一個數據卷掛載到 /dbdata


docker run -dti -v /dbdata --name dbser centos:latest


2、再啟動兩個容器,並使用數據卷容器


docker run -dti --volumes-from dbser --name db1 centos:latest


#



3、驗證


 


#



容器 db1 db2 同時掛載了同一個數據卷到本地相同 /dbdata目錄。三個容器任何一個目錄下的寫入,都可以時時同步到另外兩個


三、docker 三種網絡


  docker 網絡從覆蓋範圍可分為單個 host 上的容器網絡和跨多個 host 的網絡,docker 目前提供了映射容器端口到宿主主機和容器互聯機制來為容器提供網絡服務,在啟動容器的時候,如果不指定參數,在容器外部是沒有辦法通過網絡來訪問容器內部的網絡應用和服務的


docker 安裝時會自動在host上創建三個網絡


docker   network  ls   (查看docker  網絡)


(1) docker--none網絡


none 網絡就是什麼都沒有的網絡。掛在這個網絡下的容器除了 lo,沒有其他 任何網卡。容器創建時,可以通過 --network=none 指定使用 none 網絡


 


none網絡的應用


封閉的網絡意味着隔離,一些對安全性要求高並且不需要聯網的應用可以使用 none 網絡。


(2)docker--host網絡


連接到 host 網絡的容器,共享 docker host 的網絡棧,容器的網絡配置與host 完全一樣。可以通過 --network=host 指定使用 host 網絡


 


host 網絡的應用


  直接使用 Docker host 的網絡最大的好處就是性能,如果容器對網絡傳輸效率有較高要求,就可以選擇 host 網絡。當然不便之處就是犧牲一些靈活性,比如要考慮端口衝突問題,Docker host上已經使用的端口就不能再用了。


Docker host 的另一個用途是讓容器可以直接配置 host 網路。比如某些跨host 的網絡解決方案,其本身也是以容器方式運行的,這些方案需要對網絡進行配置,比如管理 iptables


(3) docker--bridge 網絡


docker 安裝時會創建一個 命名為 docker0 linux bridge。如果不指定--network,創建的容器默認都會掛到 docker0


 


#


 


eth0@if29      veth04c5851 是一對 veth pair


#



  veth pair 是一種成對出現的特殊網絡設備,可以把它們想象成由一根虛擬網線連接起來的一對網卡,網卡的一頭(eth0@if29)在容器中,另一頭( veth04c5851)掛在網橋 docker0 上,其效果就是將 eth0@if29也掛在了docker0 上。


# 查看網絡配置信息 ( 設置容器ip 網段、網關)


docker network inspect bridge

 


#



注:容器創建時,docker 會自動從 172.17.0.0/16 中分配一個 IP,這裏 16 位的掩碼保證有足夠多的 IP 可以供容器。


四、創建 user-defined網絡 (自定義網絡)


通過 bridge 驅動創建類似前面默認的 bridge 網絡


1、利用bridge驅動創建名為my-net2網橋(docker會自動分配網段)


docker network create --driver bridge my-net2


# 查看網絡配置信息


 


# 查看網橋


 


2、利用bridge驅動創建名為my-net3網橋(user-defined (自定義)網段及網關)


docker network create --driver bridge --subnet 172.33.1.0/24 --gateway 172.33.1.1 my-net3


# 查看網絡配置信息


 


# 查看網橋


 


3、啟動容器使用新建的my-net3網絡


docker run -it  --network=my-net3  busybox:latest


4、啟動容器使用my-net3網絡並指定ip(只有使用 --subnet 創建的網絡才能指定靜態 IP,如果是docker自動分配的網段不可以指定ip


docker run -it --network=my-net3  --ip 172.33.1.100  busybox:latest

 


5、讓已啟動不同vlanbusybox容器,可以連接到my-net2(其實在busybox中新建了my-net2的網卡)(添加網卡。訪問不同的網段)


 


# #docker network connect my-net3  08493ae30117   ( 連接)


6、使用--name指定啟動容器名字,可以使用docker自帶DNS通信,但只能工作在user-defined 網絡,默認的 bridge 網絡是無法使用 DNS 的。


#docker run -it --network=my-net3 --name=bbox1 busybox:latest 

#docker run
-it --network=my-net3 --name=bbox2 busybox:latest


7、容器之間的網絡互聯


&1、創建一個 db 容器


docker run -dti --name db centos:latest


&2、創建一個 web 容器,並使其連接到 容器db


docker run -dti --name web --link db:dblink centos:latest /bin/bash

--link db:dblink 實際是連接對端的名字和這個鏈接的名字,也就是和 db 容器建立一個叫做 dblink 的鏈接


 


# 測試  


 


注:此鏈接通信是單向的


8、容器端口映射


在啟動容器的時候,如果不指定參數,在容器外部是沒有辦法通過網絡來訪問容器內部的網絡應用和服務的,當容器需要通信時,我們可以使用 -P (大) &&-p (小)來指定端口映射


(1)   -P Docker 會隨機映射一個 49000 49900 的端口到容器內部開放的網絡端口


(2)   -p :則可以指定要映射的端口,並且在一個指定的端口上只可以綁定一個容器。


支持的格式


 IP HostPort ContainerPort


 IP : : ContainerPort


 IP HostPort


&1、 查看映射


docker port   CONTAINER ID/NAMES


&2、映射所有接口地址,此時綁定本地所有接口上的 5200 到容器的 5200 接口,訪問任何一個本地接口的 5000 ,都會直接訪問到容器內部


docker run -dti -p 5200:5200 centos:latest  /bin/bash


&3、多次使用可以實現多個接口的映射


docker run -dti -p 5400:5400  -p 5300:5300 centos:latest  /bin/bash


&4、映射到指定地址的指定接口


此時會綁定本地 192.168.226.147 接口上的 5100 到容器的 5100 接口


docker run -dti -p 192.168.226.147:5100:5100 centos:latest /bin/bash

 


&5、映射到指定地址的任意接口


此時會綁定本地 192.168.226.147 接口上的任意一個接口到容器的 5500 接口


docker run -dti -p 192.168.226.147::5500 centos:latest /bin/bash


實驗、通過端口映射實現訪問本地的 IP:PORT 可以訪問到容器內的 web


1、將容器80端口映射到主機8090端口


docker run -itd -p 192.168.226.147:8090:80 --name http-test httpd:latest


2、查看剛運行docker容器


docker  ps

 


3、進入 容器


 


4、容器內部編輯網頁文件 index.html


 


5、到宿主機上打開瀏覽器輸入 IP:PORT 訪問驗證


http://192.168.226.147:8090/


 


6、宿主機上傳靜態網站測試文件


 


7、解壓


 


8、把解壓的目錄上傳至容器下的網站根目錄


docker cp jd 67b3daf15a40:/usr/local/apache2/htdocs


9、進入容器,刪除原來的index.html 文件


 


10、展開目錄


 


11web 訪問


http://192.168.226.147:8090/


 


 

【精選推薦文章】



如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!



想要讓你的商品在網路上成為最夯、最多人討論的話題?



網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線



不管是台北網頁設計公司台中網頁設計公司,全省皆有專員為您服務



想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師"嚨底家"!!



Orignal From: docker (2)---存儲、網絡(利用docker容器上線靜態網站)

留言

這個網誌中的熱門文章

Python 併發總結,多線程,多進程,異步IO

1 測量函數運行時間 import time def profile(func): def wrapper(*args, ** kwargs): import time start = time.time() func( *args, ** kwargs) end = time.time() print ' COST: {} ' .format(end - start) return wrapper @profile def fib(n): if n<= 2 : return 1 return fib(n-1) + fib(n-2 ) fib( 35 )   2 啟動多個線程,並等待完成   2.1 使用threading.enumerate() import threading for i in range(2 ): t = threading.Thread(target=fib, args=(35 ,)) t.start() main_thread = threading.currentThread() for t in threading.enumerate(): if t is main_thread: continue t.join()   2.2 先保存啟動的線程 threads = [] for i in range(5 ): t = Thread(target=foo, args= (i,)) threads.append(t) t.start() for t in threads: t.join()   3 使用信號量,限制同時能有幾個線程訪問臨界區 from threading import Semaphore import time sema = Semaphor...

韋伯連續劇終於更新 期待第一季順利完結

  地球天文學界的跳票大王詹姆斯·韋伯空間望遠鏡 (James Webb Space Telescope,縮寫為 JWST)自 1996 年以來斷斷續續不按劇本演出的連續劇終於讓焦慮的觀眾們又等到了一次更新:五層遮陽罩測試順利完成。 裝配完成的韋伯望遠鏡與好夥伴遮陽罩同框啦。Credit: NASA   嚴格的測試是任何空間任務順利成功的重中之重。遮陽罩,這個韋伯望遠鏡異常重要的親密夥伴,要是無法正常運轉的話,韋伯的這一季天文界連續劇說不準就要一直拖更了。   詹姆斯·韋伯空間望遠鏡是歷史上造出的最先進的空間望遠鏡。它不僅是一架紅外望遠鏡,還具有特別高的靈敏度。但想要達到辣么高的靈敏度來研究系外行星和遙遠的宇宙童年,韋伯童鞋必須非常"冷靜",體溫升高的話,靈敏度會大大折損。這個時候,遮陽罩就要大顯身手啦。   遮陽罩在韋伯的設計中至關重要。韋伯望遠鏡會被發射到拉格朗日 L2 點,運行軌道很高,遠離太陽、地球與月球。太陽是韋伯的主要熱量干擾的來源,其次是地球與月球。遮陽罩會有效阻斷來自這三大熱源的能量並保護韋伯維持在工作溫度正常運轉。這個工作溫度指的是零下 220 攝氏度(-370 華氏度;50 開爾文)。 上圖中我們可以看出,韋伯望遠鏡的配置大致可分為兩部分:紅色較熱的一面溫度為 85 攝氏度,藍色較冷的一面溫度達到零下 233 攝氏度。紅色的這部分中,儀器包括太陽能板、通信設備、計算機、以及轉向裝置。藍色部分的主要裝置包括鏡面、探測器、濾光片等。Credit: STSci.   遮陽罩的那一部分和望遠鏡的鏡面這部分可以產生非常極端的溫差。遮陽的這面溫度可以達到 110 攝氏度,足以煮熟雞蛋,而背陰處的部分溫度極低,足以凍結氧氣。   工程師們剛剛完成了五層遮陽罩的測試,按照韋伯在 L2 時的運行狀態安裝了遮陽罩。L2 距離地球約 160 萬公里。NASA 表示這些測試使用了航天器的自帶系統來展開遮陽罩,測試目前都已成功完成。韋伯望遠鏡遮陽罩負責人 James Cooper 介紹說這是遮陽罩"第一次在望遠鏡系統的电子設備的控制下展開。儘管這個任務非常艱巨,難度高,但測試順利完成,遮陽罩展開時的狀態非常驚艷"。   遮陽罩由五層 Kapton 製成。Kapton 是一種聚酰亞胺薄膜材料, 耐高溫絕...

LINE 發票管家「一鍵分享發票」新功能,聚餐AA更好算帳

» » LINE 發票管家「一鍵分享發票」新功能,聚餐AA更好算帳 消費明細好清楚,不怕算錯錢啦! by in , 讀取中... 之前介紹過的「LINE 發票管家」,除了能對統一發票、管理消費紀錄,現在還能分享消費明細給其他朋友囉!趕快來看看該如何分享吧!讓大家在聚餐過後,不用再截圖、拍照把消費明細記錄下來分享到 LINE 好友群組,只要用 LINE發票管家就可以隨時一鍵分享消費明細,包括店家、消費時間、消費項目、金額通通都有,聚餐 AA 也更好算帳。 LINE 發票管家「一鍵分享發票」新功能,聚餐AA更好算帳 朋友聚餐完,經常會先由其中一位買單再事後收帳,不過難免擔心忘記拍照紀錄下消費明細,導致算帳變得很麻煩。但是,現在只要用 LINE發票管家,不僅能將發票存入載具後直接匯入發票,進而更方便管理每月的消費情況,現在還能用它來分享消費明細到 LINE 聊天室,不需要截圖,整個流程超級簡單! ▲圖片來源: 當使用 LINE發票管家並且綁定載具後,只要日常消費有將發票存入載具就通通會自動匯入 LINE發票管家。如果想暸解自己近期的消費情況,也能在 LINE發票管家點選「發票明細」查詢所有消費紀錄。 *小提醒:存入手機條碼的發票,待財政部 1-2 日作業時間將發票資料匯入後, 打開單筆消費後分享到指定對象或群組。 像是朋友聚餐或其它購物消費,就能在 LINE發票管家查看每一筆消費的所有消費明細,每一項餐點的項目、價格通通一目了然。如果想將該筆消費內容分享給好友收帳,只要點選該筆消費明細後,接著點選畫面右上角的「分享」按鈕。 網頁設計 最專業,超強功能平台可客製,窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機,請問 台中電動車 哪裡在賣比較便宜可以到台中景泰電動車門市去看看總店:臺中市潭子區潭秀里雅潭路一段102-1號。 電動車補助 推薦評價好的 iphone維修 中心擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢住家的頂樓裝 太陽光電 聽說可發揮隔熱功效一線推薦東陽能源擁有核心技術、...