
[TOC]
## 一、docker鏡像與容器
docker鏡像是一個可執行的靜態獨立軟件包,包含打包程序代碼和軟件運行環境等文件。如:代碼、運行時庫、環境變量和配置文件等都包含在其中。容器是鏡像的運行時狀態(鏡像中的軟件、程序運行),占用服務器CPU、內存、磁盤等資源。

如果學過java,用下面的這個類比能夠更形象的理解二者之間的關系:
* 鏡像可以類比java類的二進制字節碼文件。
* 容器可以類比由字節碼實例化出來的java對象。
* 一個字節碼文件(類)可以new出來多個對象,一個鏡像可以快速實例化多個容器服務。
**鏡像來源有哪些?**
* Docker Hub官方鏡像,以及國內阿里云等都有對外開放的docker鏡像倉庫。
* 使用Dockerfile自己構建鏡像。Dockerfile是代碼文件、環境變量、系統依賴軟件等的構建描述,將鏡像的構建過程固化下來,保證了不重復做環境安裝工作。概念上類似于maven的pom.xml。
* 企業私有鏡像以及私有鏡像倉庫Docker registry
**docker容器的本質是宿主機上的一個進程,這句話怎么理解?**
容器的的運行時實質是進程,但它與直接在宿主機里面執行的進程有所不同,容器進程存在屬于自己的獨立的命名空間。因此容器擁有自己的 root 文件系統、自己的網絡配置、自己的進程空間,甚至自己的用戶 ID 空間。
容器內的進程是運行在一個隔離的環境里,使用起來就好像是在一個獨立于宿主的系統下操作一樣。也因為這種隔離的特性,很多人初學 Docker 時常常會混淆容器和虛擬機。
## 二、Docker 核心組成部分
我們在前文中安裝的Docker CE主要由如下幾部分構成:Docker 客戶端(Docker Client)、Docker 守護進程(Docker daemon)、containerd 以及 runc,它們協調合作共同負責容器的創建和運行以及生命周期的管理。

* Docker Client:命令行方式向docker引擎(服務端)發送指令。
* REST API:docker 引擎(服務端)通過RESTful API的方式,對外提供操作命令入口。
* daemon:docker 守護進程,包含REST AP、身份驗證、基礎配置管理等特性。
* containerd:核心功能用于容器生命周期的管理,如:啟動、暫停、刪除等。鏡像管理功能也在containerd中。
* runc :runc是一個輕量級的、針對 Libcontainer 進行了包裝的命令行交互工具(Libcontainer 取代了早期 Docker 架構中的 LXC)。LXC 提供了對諸如命名空間(Namespace)和控制組(CGroup)等基礎工具的操作能力。
* namespace實現資源隔離,如:獨立的文件系統、網絡空間、用戶空間等。
* cgroups實現資源的限制,如每個容器使用多少內存。
- 文檔概要
- 第一章 docker基礎
- docker介紹
- CentOS7安裝docker
- 基礎概念介紹
- 示例-docker安裝nginx
- 鏡像管理詳解
- 容器管理詳解
- 容器自啟動與保活
- 使用IDEA工具遠程管理
- 第二章 制作與管理鏡像
- 鏡像分層原理
- Dockerfile語法解析
- 使用Dockerfile構建鏡像
- 制作Springboot鏡像
- registry v2鏡像倉庫搭建
- 第三章 docker數據管理
- docker存儲驅動
- 數據管理-Bind mounts
- 數據管理-Volumes
- 容器間數據共享
- 第四章 Docker容器安全
- 用戶提權問題實驗
- 非root用戶安裝使用Docker
- API認證接口使用HTTPS
- 資源配額限制
- 第五章 Docker網絡基礎
- docker網絡基礎概念
- docker基礎網絡模式
- overlay跨宿主機通信
- 配置DNS服務
- 第六章 DockerCompose
- 安裝與入門
- 一鍵部署wordpress
- Harbor的搭建與使用
- YAML配置文件詳解
- 第七章 Docker Swarm
- 幾乎沒人用就不寫了
- 附錄
- CentOS7內核升級
- docker引擎及容器日志
- 離線掛載yum源
- 筆者其他作品推薦
- vue深入淺出系列
- 手摸手教你Spring Boot2.0
- Spring Security-JWT-OAuth2一本通
- 實戰前后端分離RBAC權限管理系統
- 實戰SpringCloud微服務從青銅到王者