docker是一個開源的應用容器引擎,使用go語言開發;
基於linux內核技術對應用程序進行隔離;
核心理念是將應用及依賴包打包到一個可移植的容器中;
可發佈到任意linux發行版的docker引擎上;
使用沙箱機制運行程序:
(應用程序只能訪問自己的目錄,這個目錄稱爲沙箱目錄,而應用程序之間禁止數據的共享和訪問; 沙箱機制是一種安全機制,設計原理就是隻能允許自己的應用訪問目錄,而不允許其他的應用訪問;
在iOS系統中,除了特有的應用可以通過使用特定的API共享數據(例如聯繫人),而其他的應用之間都不能共享數據。)
Docker體系結構:
-
Engine:處理docker客戶端的請求,並進行相關的分發,下載鏡像--image repository--;
-
runC:掛載文件系統並啓動容器;
- docker ps -q 顯示運行容器的id;
Docker工作過程:
虛擬機與容器的區別:
啓動時間不同
虛擬機分鐘級,docker秒級
輕量級
docker以M爲單位,虛擬機以G爲單位
性能
docker更快速
安全性:
不如虛擬機,一定程度上需要訪問物理機內核;如何解決?
使用要求
結合實際環境;docker適合快速部署等
-
場景一:節省項目環境部署時間
1.單項目打包
2.整套項目打包
利用docker-compose
3.新開源技術試用 -
場景二:環境的一致性
便於移植,多次利用部署,保持運行狀態一致性; -
場景三:持續集成:
docker+jenkins構建持續集成環境: -
場景四:微服務
將業務架構拆分成微小的業務去組織整體業務;
一個容器中只運行一個服務,容器之間隔離; - 場景五:彈性伸縮
業務量增加或減少,資源整合比較方便,資源拓展等;
docker的版本及安裝:
docker EE是企業版本,提供技術支持等;
docker CE是公共版本;
鏡像管理:
存儲驅動:
aufs,devicemapper,overlay,overlay2(目前最熱)
管理命令:
exec 執行命令
pull 拉鏡像
push 上傳鏡像
inspect 查看容器信息
stats 查看容器運行狀態
save 保存鏡像到本地
load 加載鏡像文件
volume 創建存儲
管理應用程序數據:
volumes、bind mounts和tmpfs;
tmpfs是存儲在宿主機內存中,不會寫入到文件系統;
bind mounts掛載宿主機目錄,相當於軟連接;
企業級私有倉庫:
docker harbor
docker監控:
cadvisor+influxdb+grafana
cadvisor:容器資源收集系統,收集容器的資源利用率,有內置的圖形頁面;
influxdb:時序數據庫管理系統,以時間爲索引存儲數據;
grafana:儀表盤,展示數據;