1.Docker入門(筆記)

早就聽說了docker,但是就是不知道它是干什么的,能用來干什么。如今它越來越強大,我也得跟上。先大體普及下吧。

1.docker能做什么

解決虛擬機能解決的問題,解決虛擬機由于資源要求過高不能解決的問題

  • 隔離應(yīng)用依賴
  • 創(chuàng)建應(yīng)用鏡像進行復(fù)制
  • 創(chuàng)建容易分發(fā)的即啟即用的應(yīng)用
  • 允許實例簡單、快速地擴展
  • 測試應(yīng)用并隨后銷毀它們

輕量可移植----從而有了船、集裝箱、物品的故事

2.幾個概念

*** 鏡像 ***

最初知道的鏡像就是 裝系統(tǒng)時候,拷貝一個鏡像,用這個鏡像很快就裝完系統(tǒng)了。它應(yīng)該是 操作系統(tǒng)的一個快照而已。當然,也可以用個軟件建立自己的鏡像,然后備份好了就可以。對了,一鍵ghost。

docker的鏡像類似VM的快照。

創(chuàng)建:
拿來主義,拿一個鏡像來修改。

方式一 在一個文件中指定一個基礎(chǔ)鏡像及需要完成的修改;

方式二 通過“運行”一個鏡像,對其進行修改并提交。

命名:
鏡像擁有唯一ID,以及一個供人閱讀的名字和標簽對。

可移植性:
Docker允許你在一個鏡像中指定卷和端口。(Docker不允許你在鏡像上指定任何不可移植的內(nèi)容。)

容器

故名思議,容器用來運行應(yīng)用的啦。

可以從鏡像中創(chuàng)建容器,這等同于從快照中創(chuàng)建虛擬機,不過更輕量。

容器是隔離的。

命名:
唯一ID 唯一的供人閱讀的名字

容器對外公開服務(wù)是必要的,因此Docker允許公開容器的特定端口。

容器有一個很大的差異,它們被設(shè)計用來運行單進程

容器之所以是短暫的,是因為當你從鏡像上創(chuàng)建一個容器,Docker會創(chuàng)建一個空白的union文件系統(tǒng)加載在與該鏡像關(guān)聯(lián)的union文件系統(tǒng)之上。

數(shù)據(jù)卷

數(shù)據(jù)卷讓你可以不受容器生命周期影響進行數(shù)據(jù)持久化。

它們表現(xiàn)為容器內(nèi)的空間,但實際保存在容器之外,從而允許你在不影響數(shù)據(jù)的情況下銷毀、重建、修改、丟棄容器。

Docker允許你定義應(yīng)用部分和數(shù)據(jù)部分,并提供工具讓你可以將它們分開。

使用Docker時必須做出的最大思維變化之一就是:容器應(yīng)該是短暫和一次性的。

卷所做的是在容器內(nèi)指定一個目錄,以便在union文件系統(tǒng)之外保存它。

卷是針對容器的,你可以使用同一個鏡像創(chuàng)建多個容器并定義不同的卷。

卷還可以用來在容器間共享數(shù)據(jù)

鏈接

容器啟動時,將被分配一個隨機的私有IP,其它容器可以使用這個IP地址與其進行通訊。

要開啟容器間通訊,Docker允許你在創(chuàng)建一個新容器時引用其它現(xiàn)存容器,在你剛創(chuàng)建的容器里被引用的容器將獲得一個(你指定的)別名。我們就說,這兩個容器鏈接在了一起。

鏡像,容器,卷,鏈接參考圖
鏡像,容器,卷,鏈接參考圖

3.如何完成它需要的功能

Docker使用cgroups來提供容器隔離,而union文件系統(tǒng)用于保存鏡像并使容器變得短暫。

cgroups:linux內(nèi)核功能

IBM關(guān)于CGroup 介紹、應(yīng)用實例及原理描述

CGroup 是將任意進程進行分組化管理的 Linux 內(nèi)核功能。CGroup 本身是提供將進程進行分組化管理的功能和接口的基礎(chǔ)結(jié)構(gòu),I/O 或內(nèi)存的分配控制等具體的資源管理功能是通過這個功能來實現(xiàn)的。這些具體的資源管理功能稱為 CGroup 子系統(tǒng)或控制器。CGroup 子系統(tǒng)有控制內(nèi)存的 Memory 控制器、控制進程調(diào)度的 CPU 控制器等。運行中的內(nèi)核可以使用的 Cgroup 子系統(tǒng)由/proc/cgroup 來確認。
CGroup 提供了一個 CGroup 虛擬文件系統(tǒng),作為進行分組管理和各子系統(tǒng)設(shè)置的用戶接口。要使用 CGroup,必須掛載 CGroup 文件系統(tǒng)。這時通過掛載選項指定使用哪個子系統(tǒng)。

限制Linux進程組的資源占用(內(nèi)存、CPU)
為進程組制作 PID、UTS、IPC、網(wǎng)絡(luò)、用戶及裝載命名空間

union文件系統(tǒng)用

Union文件系統(tǒng)允許通過union裝載來達到一個分層的積累變化

當你下載一個鏡像,修改它,然后保存成新版本,你只是創(chuàng)建了加載在包裹基礎(chǔ)鏡像的初始層上的一個新的union文件系統(tǒng)。

Linux命名空間

LXC為Linux Container的簡寫。

LXC所實現(xiàn)的隔離性主要是來自內(nèi)核的命名空間, 其中pid、net、ipc、mnt、uts 等命名空間將容器的進程、網(wǎng)絡(luò)、消息、文件系統(tǒng)和hostname 隔離開。

LXC內(nèi)部依賴Linux內(nèi)核的3種隔離機制(isolation infrastructure): Chroot 、 Cgroups 、 Namespaces

Linux的3.12內(nèi)核支持6種Namespace:
UTS: hostname
IPC: 進程間通信
PID: "chroot"進程樹
NS: 掛載點,首次登陸Linux
NET: 網(wǎng)絡(luò)訪問,包括接口
USER:user-id映射到真實的user-id(之后的文章會講到)

參考

1.http://yuedu.baidu.com/ebook/d817967416fc700abb68fca1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,744評論 0 120
  • Docker — 云時代的程序分發(fā)方式 要說最近一年云計算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,844評論 15 147
  • 寫這篇文章主要是為了今后畢業(yè)論文素材上的整理,同時對docker進行鞏固溫習(xí)。大綱: docker簡介docker...
    胡圖仙人閱讀 7,766評論 2 96
  • 1 慢慢來,走的比較遠。 2 實踐比光說重要 3 兼聽則明,不要害怕不同的聲音。 4 定一個長期計劃,然后實踐跟蹤...
    提個問題閱讀 197評論 0 1
  • 快樂會過去 悲傷也會過去 你是不是跟我一樣 跨出了一步便不愿再回頭 直到受到了傷害 才像發(fā)了瘋一樣 拼命往回跑 你...
    白夕閱讀 346評論 4 2

友情鏈接更多精彩內(nèi)容