認識docker
一 什麼是容器?
官方解釋: 容器就是将軟體打包成标準化單元,以用于開發,傳遞部署.
個人了解: 我覺得容器就是一個存放東西的地方,就像書包可以裝各種文具、衣櫃可以放各種衣服、鞋架可以放各種鞋子一樣。我們現在所說的容器存放的東西可能更偏向于應用比如網站、程式甚至是系統環境。
二 什麼是docker?
Docker 是世界領先的軟體容器平台。Docke最初實作是基于 LXC.
docker優點: 性能好,輕量級,啟動快.損耗少.(安全性好)
docker的功能: 它是一個軟體打包技術
docker容器的第一個程序(初始指令)必須要夯住,否則容器會退出.
docker主要元件: 鏡像,容器,倉庫,網絡,存儲
啟動容器必須需要一個鏡像,倉庫中
2.1為什麼要用docker?
a.一緻的運作環境
b.啟動快
c.隔離性好
d.彈性伸縮,快速擴充
e.遷移友善
f.持續傳遞和部署
三 容器 vs 虛拟機
特性 | 容器 | 虛拟機 |
---|---|---|
啟動 | 秒級 | 分鐘級 |
硬碟使用 | 一般為MB | 一般為GB |
性能 | 接近原生 | 弱于原生 |
系統支援量 | 單機支援上千個容器 | 一般幾十個 |
隔離級别 | 隔離不同的應用 | 徹底隔離整個運作環境 |
四 容器和虛拟化的差別
4.1linux容器技術,容器虛拟化和kvm虛拟化的差別 kvm虛拟化: 需要硬體的支援,需要模拟硬體,可以運作不同的作業系統,啟動時間分鐘級(開機啟動流程)
4.2linux開機啟動流程: bios開機硬體自檢 根據bios設定的優先啟動項boot 網卡 硬碟 u盤 光驅 讀取mbr引導 2T UEFI(gpt分區) mbr硬碟分區資訊,核心加載路徑,
加載核心 啟動第一個程序/sbin/init systemd 系統初始化完成 運作服務(nginx,httpd,mysql) 。。。
4.3容器啟動流程: 共用主控端核心: 第一個程序直接啟動服務(nginx,httpd,mysql)
4.4容器:共用主控端核心,輕量級,損耗少,啟動快,性能高,隻能運作linux系統 虛拟機:需要硬體的支援,需要模拟硬體,需要走開機啟動流程,可以運作不同的作業系統
五 Docker基本概念
Docker 包括三個基本概念
- 鏡像(Image)
- 容器(Container)
- 倉庫(Repository)
簡單步驟如下:
Client 執行 “docker run ....” 這條指令時——> 它會檢視本地有沒有這個“鏡像”(image),如果沒有就向“鏡像倉庫”拉取到本地 ——> 然後将拉取的“鏡像”運作起來就叫“容器”。
不是很恰當舉例,僅供個人參考:
5.1鏡像(Image)——一個特殊的檔案系統
Docker 鏡像是一個特殊的檔案系統,除了提供容器運作時所需的程式、庫、資源、配置等檔案外,還包含了一些為運作時準備的一些配置參數(如匿名卷、環境變量、使用者等)。 鏡像不包含任何動态資料,其内容在建構之後也不會被改變。
5.2 容器(Container)——鏡像運作時的實體
容器是鏡像運作時的實體。容器可以被建立、啟動、停止、删除、暫停等。
容器的實質是程序,但與直接在宿主執行的程序不同,容器程序運作于屬于自己的獨立的 命名空間。前面講過鏡像使用的是分層存儲,容器也是如此。
容器存儲層的生存周期和容器一樣,容器消亡時,容器存儲層也随之消亡。是以,任何儲存于容器存儲層的資訊都會随容器删除而丢失。
5.3 倉庫(Repository)——集中存放鏡像檔案的地方
鏡像建構完成後,可以很容易的在目前宿主上運作,但是, 如果需要在其它伺服器上使用這個鏡像,我們就需要一個集中的存儲、分發鏡像的服務,Docker Registry就是這樣的服務。
一個 Docker Registry中可以包含多個倉庫(Repository);每個倉庫可以包含多個标簽(Tag);每個标簽對應一個鏡像。是以說:鏡像倉庫是Docker用來集中存放鏡像檔案的地方類似于我們之前常用的代碼倉庫。
六 Build, Ship, and Run
- Build(建構鏡像) : 鏡像就像是集裝箱包括檔案以及運作環境等等資源。
- Ship(運輸鏡像) :主機和倉庫間運輸,這裡的倉庫就像是超級碼頭一樣。
- Run (運作鏡像) :運作的鏡像就是一個容器,容器就是運作程式的地方。
Docker 運作過程也就是去倉庫把鏡像拉到本地,然後用一條指令把鏡像運作起來變成容器。是以,我們也常常将Docker稱為碼頭勞工或碼頭裝卸工,這和Docker的中文翻譯搬運勞工如出一轍。