Docker 是什么?
- 是實現容器技術的一種工具
- 是一個開源的應用容器引擎
- 使用 C/S 架構模式,通過遠程API 來管理
- 可以打包一個應用及依賴包到一個輕量級、可移植的容器中
容器是什么?
- 對應用軟件和依賴包進行標准打包
- 應用或服務之間相互隔離,但又共享一個 OS
- 可以打包運行在不同的系統上
為什么會出現容器?
為了解決單機部署應用和虛擬化的局限性而誕生
虛擬化是什么?
- 可以理解成虛擬機技術
- 一個主機可以部署多個虛擬機,每個虛擬機又可以部署多個應用
- 對於主機來說,虛擬機就是一個普通文件
虛擬化的缺點是什么?
- 資源占用多:每個虛擬機都是完整的操作系統,需要給它分配大量系統資源
- 冗余步驟多:一個完整的操作系統,一些系統級別的步驟無法避免,比如用戶登錄
- 啟動慢:啟動操作系統需要多久,啟動虛擬機就要多久
Docker 有什么優勢?
- 資源占用少:每個容器都共享主機的資源,容器需要多少就用多少
- 啟動快:一條命令即可將容器啟動,而容器啟動時一般會將服務或應用一並啟動
Docker 和 虛擬化的區別?
| 比較點 | 容器 | VM |
| 隔離 | 應用程序層的抽象,將代碼和依賴項打包在一起【容器是應用層面的隔離】 | 將一台服務器轉變為多台服務器的物理硬件的抽象【虛擬化是物理資源層面的隔離】 |
| OS |
多個容器可以在同一台計算機上運行,並與其他容器共享OS內核 |
也允許多個VM在單台計算機上運行,但需要啟動單獨的虛擬機 OS |
| 資源共享 |
僅有一個物理機的OS,多個容器共享物理機的資源 |
多個OS(物理機一個OS,每個 VM 一個 OS),均獨享資源 |
| 運行數量 | 一台物理機可以運行數百個容器 | 一台物理機最多可以運行十來個虛擬機 |
| 大小 | 容器鏡像的大小通常為幾十 MB | 包含操作系統、二進制文件、庫,至少也要幾個 GB |
| 啟動速度 | 可以在數秒內完成啟動 | 和物理機啟動時間一樣慢,可能要幾分鍾 |
| 可以處理更多的應用程序,消耗的資源比 VM 少 | ||
| 每個容器在用戶空間中作為隔離的進程運行 |
Docker 容器有幾種在狀態?
- starting 運行狀態
- Exited 退出狀態
- Paused 暫停狀態
- healthy 健康狀態
- unhealthy 非健康狀態
什么是倉庫?
- 存放鏡像文件的地方,比如 DockerHub,可以將自己的鏡像上傳上去
- 不同鏡像可以有不同的標簽
- 主機可以從倉庫下載鏡像
什么是鏡像?
- 創建容器的模板
- 同一個鏡像可以創建多個不同的容器
什么是容器?
- 通過鏡像生成的運行實例
- 不同容器之間是相互隔離,獨立運行的
- 通常一個容器就是一個應用或一個服務,也是我們常說的微服務
倉庫、鏡像、容器的關系是?
倉庫存放鏡像,主機通過倉庫下載鏡像,通過鏡像創建容器
有什么常用的 Docker 命令?
- docker pull 拉取鏡像
- docker create 創建容器
- docker rm 刪除容器
- docker ps 列出正在運行的容器列表
- docker run 創建容器並運行指定命令
- docker start 啟動容器
- docker stop 停止運行容器
- docker restart 重啟容器
- docker rm 刪除容器
- docker exec 容器執行指定命令
- docker rmi 刪除鏡像
如何把主機的東西拷貝到容器內部?
通過 docker cp 命令即可,還能把容器內部內容拷貝到主機
進入容器的方法有哪些?
通過 docker exec 進入容器內部
如何讓容器隨着 Docker 服務啟動而自動啟動?
- 創建容器時,加上 --restart=always 參數
- 創建容器后,通過修改容器配置文件的 RestartPolicy 參數值
- 創建容器后,使用 docker update 命令更新容器的 --restart 參數值
如何指定容器的端口映射?
- 創建容器時,通過 -p 來指定端口映射
- 創建容器后,通過修改容器的配置文件來指定端口映射
如何查看官方鏡像服務的默認端口是什么?
- 可以通過 docker inspect 查看鏡像信息,然后找到端口映射一欄
- 也可以先用該鏡像創建一個容器並運行,通過 docker ps 查看運行端口是什么
如何修改容器的端口映射?
- 刪除容器,重新創建容器,並指定端口映射
- 通過容器配置文件修改端口映射
- 通過 docker commit 將容器構建為一個全新的鏡像,然后再通過該鏡像創建新的容器,並指定端口映射
如何指定容器的目錄映射?
- 創建容器時,通過 -v 來指定目錄映射
- 創建容器后,通過修改容器的配置文件來指定目錄映射
如何修改容器的目錄映射?
- 刪除容器,重新創建容器,並指定目錄映射
- 通過容器配置文件修改目錄映射
- 通過 docker commit 將容器構建為一個全新的鏡像,然后再通過該鏡像創建新的容器,並指定目錄映射
K8S 是什么?
Kubernetes 是容器集群管理系統,是一個開源的平台,可以實現容器集群的自動化部署、自動擴縮容、維護等功能
- 快速部署應用
- 快速擴展應用
- 無縫對接新的應用功能
- 節省資源,優化硬件資源的使用
