原文地址: http://blog.jboost.cn/docker-1.html html
接觸Docker也有兩年多了,斷斷續續玩過一些應用場景,如安裝一些經常使用工具服務,部署業務項目,基於gitlab+jenkins pipeline+docker的CI/CD實現等。瞭解其基本知識與操做,但不能說深度掌握,故藉此系列進行梳理與學習,也但願對有意學習Docker的人提供參考。mysql
Docker最初是dotCloud公司(後來也更名爲Docker)的一個內部項目,於2013年3月開源。Docker使用Google推出的Go語言實現,基於Linux內核的cgroup、namespace、Union FS等技術(先不用急着瞭解這些都是啥),對進程進行隔離,是操做系統層面的虛擬化技術。相對於傳統的硬件層面的虛擬化技術(虛擬機),Docker顯得更爲輕量化。下圖爲傳統虛擬機與Docker的結構對比
git
由上圖可看出傳統虛擬機技術是在硬件層面虛擬出一套硬件(CPU、內存、磁盤、網卡等)後,在其上運行一個完整的操做系統,再在操做系統上運行應用進程;而Docker的應用進程是直接運行在宿主機的內核上,也不須要進行硬件虛擬,所以,Docker要比傳統虛擬機更爲輕便。web
總結Docker相對傳統虛擬化技術的優點以下:redis
Docker的基本架構圖以下
sql
主要包括幾部分:docker
dockerd
):Docker的執行引擎,負責監聽處理Docker客戶端請求與管理Docker相關對象,如鏡像、容器、網絡、數據卷等。一個Docker守護進程可與其它Docker守護進程進行通訊,做爲Docker服務進行管理。docker
):Docker客戶端(docker
CLI命令)是大多數用戶用來與Docker守護進程交互的方式,好比你在命令行執行docker run
,Docker客戶端將發送該命令請求到Docker守護進程,由守護進程執行。Docker客戶端可經過REST API, UNIX Socket或網絡接口來與Docker守護進程進行通訊,而且可與多個Docker守護進程進行通訊。docker
相關命令默認會從Docker Hub上搜索與下載鏡像,咱們能夠配置一些國內鏡像倉庫地址來進行加速,甚至搭建本身的私有鏡像倉庫。根據第二部分Docker的優點及筆者的經驗來看,目前Docker主要用於微信
在微服務架構、DevOps這些概念盛行的時代,容器化技術變得愈來愈重要,幾乎成爲每一位開發人員須要掌握的技能。本系列文章是筆者基於自身實踐及相關文獻參考,對Docker相關技術進行整理,歡迎關注,共同窗習。
個人我的博客地址:http://blog.jboost.cn
個人微信公衆號:jboost-ksxy (一個不僅有技術乾貨的公衆號,歡迎關注,及時獲取更新內容)
———————————————————————————————————————————————————————————————
網絡
原文出處:https://www.cnblogs.com/spec-dog/p/11186877.html架構