學習地址:http://blog.51cto.com/lizhenliang 和 他的視頻html
一 Docker 的介紹和安裝linux
二 鏡像管理docker
三 容器管理centos
六 網絡管理app
七 Dockerfile微服務
九 圖形化界面管理性能
十 構建容器監控系統
一 Docker 的介紹和安裝
1.1 Docker是什麼
1.2 Docker的體系結構
1.3 內部組件
1.4 虛擬機和容器的區別
1.5 Docker的應用場景
1.6 Linux 安裝Docker
Docker是一個開源的應用容器引擎,使用Go語言開發,基於Linux內核的cgroup, namespace, Union FS等技術,對應用進程進行封裝隔離,而且獨立於宿主機與其餘進程,這種運行時封裝的狀態稱爲容器。Docker早起版本實現是基於LXC,並進一步對其封裝,包括文件系統、網絡互聯、鏡像管理等方面,極大簡化了容器管理。從0.7版本之後開始去除LXC,轉爲自行研發的libcontainer,從1.11版本開始,進一步演進爲使用runC和containerd。Docker理念是將應用及依賴包打包到一個可移植的容器中,可發佈到任意Linux發行版Docker引擎上。使用沙箱機制運行程序,程序之間相互隔離。
它是經過內核虛擬化技術來提供容器的資源的隔離和安全保證等等,由於docker是經過操做系統層的虛擬化實現隔離,因此docker容器在運行的時候是不須要額外的虛擬化管理程序,他是內核級別的虛擬化,能夠實現更加高效的性能,同事對資源的額外的需求很低,他的最本質的特徵,docker是經過隔離來進行建立容器。
咱們經過Docker 客戶端發送指令,經過Docker引擎來分發指令,是下載鏡像或者是建立容器,若是本地有鏡像直接引用,若是本地沒有就從倉庫拉取,通知Containerd 建立容器,Containerd在收到Engine的請求以後會啓動一個shim,shim 會讓runc提供一個容器的運行環境,runC就會去掛載文件系統,最後runC就會在文件系統啓動一個進程。
Containerd:是一個簡單的守護進程,使用runC管理容器。向Docker Engine提供接口
Shim:只負責管理一個容器。
runC:是一個輕量級的工具,只用來運行容器。
Namespace
命名空間,Linux內核提供的一種對進程資源隔離的一種機制,例如進程、網絡、掛載點等資源,把他們封裝在一個名稱空間中,只能看到本容器內的資源
CGroups
控制組,LInux內核提供的一種限制進程資源的機制:例如CPU、內存等資源
咱們能夠在宿主機上經過 ls /sys/fs/cgroup 看到咱們隊哪些資源進行了限制,限制的資源有 blkio cpu cpuacct cpu,cpuacct cpuset devices freezer hugetlb memory net_cls net_cls,net_prio net_prio perf_event pids systemd
UnionFS:
聯合文件系統,支持將不一樣位置的目錄掛載到同一個虛擬文件系統,造成一種分層的模型
以KVM爲例和Docker相比
啓動時間:
Docker 秒級啓動,KVM分鐘級別啓動
輕量級:
容器鏡像大小一般以M爲單位,虛擬機以G爲單位
容器資源佔用小,要比虛擬機部署更加的快速
性能:
資源共享宿主機內核,系統級虛擬化,佔用資源少,沒有Hypervisor層開銷,容器性能基本接近物理機
虛擬機須要Hypervisor層支持,虛擬化一些設備,具備完整的GuestOS,虛擬化開銷大,於是下降性能,沒有容器性能好
安全性:
因爲共享宿主機內核,只是進程級隔閡,所以隔離性和穩定性不如虛擬機,容器具備必定權限範根宿主機內核,存在必定安全隱患
使用要求:
KVM基於硬件的徹底虛擬化,須要硬件CPU虛擬化技術支持
容器共享宿主主機內核,可運行在主流的Linux發行版,不用考慮CPU是否支持虛擬化技術
應用場景:(http://blog.51cto.com/lizhenliang/1978081)
節省橡膠木環境部署時間
單項目打包
整套項目打包
新開源技術試用
環境一致性
持續集成
微服務
彈性伸縮
Linux 安裝Docker
就個人環境看一下文檔的安裝方式:
https://docs.docker.com/install/linux/docker-ce/centos/
咱們這裏安裝ce 版本
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce
這裏咱們如今要是啓動的話,咱們用的倉庫源的地址就是官方的,可能用起來不太方便,咱們能夠給企改爲國內的,而後在啓動
systemctl start docker
卸載的方式:
yum remove docker-ce
rm -rf /var/lib/docker
博客總結來源於:http://edu.51cto.com/course/10659.html