Docker基础篇
目錄:
- docker介紹
- Docker的概念
- 容器
- docker技術應用場景
- docker解決的問題
- Docker架構
- docker與虛擬機比較
- copy和add的區別
docker介紹
docker思想
- Docker的思想源于集裝箱,集裝箱解決了什么問題呢?
- 在早期運輸貨物需要不同分類的船,例如運輸水果的船,運輸生活用品的船
- 有了集裝箱后,在大船上,可以把貨物分類到不同的集裝箱中,水果一個集裝箱,生活用品一個集裝箱
- 它們之間互不影響,只要把貨物封裝好集裝箱里,就可以把不同類的貨物一起運走。
- 通過Docker logo也可以看出所以然來,Docker就像大船,集裝箱就是容器
- 一條鯨魚拖著若干個集裝箱的經典形象已經深入人心
Docker的概念
容器
每個容器擁有一套和宿主機完全隔離的文件系統(共用linux內核),程序在這個虛擬容器里運行,就好像在真實的物理機上運行一樣
- 容器是一個操作系統級別下的虛擬化技術,運行一個容器就像運行一個進程一樣
- 容器依賴linux內核特性:Namespace(資源隔離)和 Cgroups(資源限制)
資源隔離:
1)Linux Namespaces機制提供一種資源隔離方案,每個Namespace看上去就像一個單獨的Linux系統。
2)PID,IPC(進程通信),Network等系統資源不再是全局性的,而是屬于某個特定的Namespace。
3)每個Namespace下的資源對于其他namespace下的資源都是透明,不可見的。
4)系統中可以同時存在兩個進程號為0,1,2的進程,由于屬于不同的Namespace,所以它們之間并不沖突。
5)而在用戶層面上只能看到屬于用戶自己Namespace下的資源,例如使用ps命令只能列出自己Namespace下的進程。
6)這樣每個Namespace看上去就像一個單獨的Linux系統。
資源限制:
1)為了讓容器中的進程更加可控,Docker 使用 Linux cgroups 來限制容器中的進程允許使用的系統資源。
2)可以在啟動容器是指定每個容器可以使用的 網絡、磁盤、CPU以及內存 等
docker技術應用場景
場景一:節省項目環境部署時間
1)單項目打包
2)整套項目打包
3)新開源技術試用
有時,我們想調研一些開源項目,我們可以直接從公共鏡像倉庫pull項目官方做好鏡像啟動容器即可。
場景二:環境一致性
場景三:持續集成
場景四:微服務
docker解決的問題
Docker架構
- Docker客戶端(Client): docker 命令行工具,用戶也可以通過 REST API 與服務器通信
- Docker服務器(Docker daemon): 服務器組件,以 Linux 后臺服務的方式運行, Docker daemon 運行在 Docker host 上,負責創建、運行、監控容器,構建、存儲鏡像
- Docker鏡像(Image): 可將 Docker 鏡像看著只讀模板,通過它可以創建 Docker 容器
- 鏡像倉庫(Registry):Registry 是存放 Docker 鏡像的倉庫,Registry 分私有和公有兩種
- Docker容器(Container):Docker 容器就是 Docker 鏡像的運行實例
docker與虛擬機比較
舉例:
1)Docker就是手機中的各種APP,只需要一個系統就可以下載自己所需的應用
2)虛擬化技術相當于蘋果手機安裝一個龐大軟件,這個軟件上安裝安卓系統、魅族系統等,每個系統上還要安裝各類應用。
copy和add的區別:
copy一般是拷貝主機不同文件夾的數據
add:可以拷貝宿主機文件到容器中,而且可以執行網絡命令
來自于原址參考
總結
- 上一篇: Redis事物分布式锁
- 下一篇: 布隆过滤器Redis缓存穿透雪崩击穿热点