docker
intro
- docker 是一個用於開發、交互和運行應用程序的開發平臺。Docker 可以將應用程序與基礎架構分開,從而能夠快速交付軟件。藉助Docker,能夠以與管理應用程序相同的方式來管理基礎架構。
- docker 提供了在鬆散隔離的環境(稱爲容器)中打包和運行應用程序的功能。隔離和安全性能夠在給定主機上同時運行多個容器。容器是輕量級的,由於它們不須要虛擬機管理程序的額外負載,而是直接在主機的內核中運行。這意味着與使用虛擬機相比,能夠在給定的硬件組合上運行更多的容器。甚至能夠在其實是虛擬機的主機中運行Docker容器!
- Docker提供了工具和平臺來管理容器的生命週期:
- 使用容器開發應用程序及其支持組件。
- 容器成爲分發和測試應用程序的單元。
- 準備就緒後,能夠將應用程序做爲容器或協調服務部署到生產環境中。不管生產環境是本地數據中心,雲提供商仍是二者的混合,其工做原理都相同。
docker engine
Docker Engine 是具備如下主要組件的客戶端-服務器應用程序:docker
- 服務器是一種長期運行的程序,稱爲守護程序進程-daemon(
dockerd
命令)。
- REST API,它指定程序能夠用來與守護程序進行通訊並指示其操做的接口。
- 命令行界面(CLI)客戶端(
docker
命令)。
- docker CLI 經過 REST API 或者 CLI 命令控制 daemon 或者與之交互
- daemon 建立管理對象,例如 images, containers, networks, and volumes
application
- 容器很是適合持續集成和持續交付(CI / CD)工做流程
- Docker的可移植性和輕量級的特性還使您能夠輕鬆地動態管理工做負載,並根據業務需求指示實時擴展或拆除應用程序和服務
- 在同一硬件上運行更多工做負載
namespaces
Docker 使用一種稱爲 namespaces
提供容器的隔離工做區的技術。運行容器時,Docker 會爲該容器建立一組 命名空間。安全
這些名稱空間提供了一層隔離。容器的每一個方面都在單獨的名稱空間中運行,而且對其的訪問僅限於該名稱空間。服務器
Docker Engine 在Linux上使用如下名稱空間:網絡
pid
:進程隔離(PID:process ID)
net
:管理網絡接口(NET:networking)
ipc
:管理訪問IPC資源(IPC:interProcess communication)
mnt
:管理文件系統掛載點(MNT:mount)
uts
:隔離內核和版本標識符。(UTS:Unix timesharing system)