一. 簡介
Docker是一個用于開發(fā),交付和運行應用程序的開放平臺。Docker使我們能夠將應用程序與基礎架構分開,從而可以快速交付軟件。借助Docker,我們可以與管理應用程序相同的方式來管理基礎架構。通過利用Docker快速交付,測試和部署代碼的方法,可以顯著減少編寫代碼和在生產環(huán)境中運行代碼之間的延遲。
Docker提供了工具和平臺來管理容器的生命周期:
- 使用容器開發(fā)應用程序及其支持組件。
- 容器成為分發(fā)和測試公司應用程序的單元。
- 準備就緒后,可以將應用程序作為容器或協(xié)調服務部署到生產環(huán)境中。無論是生產環(huán)境還是本地數(shù)據(jù)中心,云提供商還是兩者的混合,實現(xiàn)跨基礎設施架構。
二. 使用
由于個人主要使用macOS,所以以后的分享主要側重macos系統(tǒng)為主,linux的操作差別不大,但是Windows系統(tǒng)略有區(qū)別。
2.1 安裝
- Docker Desktop for Mac安裝
Mac Desktop - brew安裝
我們通過brew的安裝指令安裝即可,如
brew cask install docker
2.2 安裝Docker-Compose
其實在Mac上面安裝都很方便,上面的倆種方式都包含了Docker-Compose組件了,所以不需要單獨安裝。
但是Linux和windows可能略有不同,請同學多查看官方文檔。

2.3 驗證
驗證Docker以及Docker-Compose的版本,請使用如下指令:
docker --version
docker-compose --version
效果如下,則為成功

三. 核心概念
3.1 鏡像:Image
它類似于虛擬機中的鏡像,是一個包含有文件系統(tǒng)的面向Docker引擎的只讀模板。任何應用程序運行都需要環(huán)境,而鏡像就是用來提供這種運行環(huán)境的。例如一個Ubuntu鏡像就是一個包含Ubuntu操作系統(tǒng)環(huán)境的模板,同理在該鏡像上裝上Apache軟件,就可以稱為Apache鏡像。
3.2 容器:Container
它是鏡像的實例化體現(xiàn),更像一個輕量級的沙盒,可以將其看作一個極簡的Linux系統(tǒng)環(huán)境(包括root權限、進程空間、用戶空間和網絡空間等),以及運行在其中的應用程序。Docker引擎利用容器來運行、隔離各個應用。
容器是鏡像創(chuàng)建的應用實例,可以創(chuàng)建、啟動、停止、刪除容器,各個容器之間是是相互隔離的,互不影響。注意:鏡像本身是只讀的,容器從鏡像啟動時,Docker在鏡像的上層創(chuàng)建一個可寫層,鏡像本身不變。
3.3 倉庫:Repository
它類似于代碼倉庫,只是這兒是更細分的鏡像倉庫,是Docker用來集中存放鏡像文件的地方。
鏡像倉庫(Repository)與注冊服務器(Registry)的區(qū)別:
Repository:本身是一個倉庫,這個倉庫里面可以放具體的鏡像,是指具體的某個鏡像的倉庫,比如Tomcat下面有很多個版本的鏡像,它們共同組成了Tomcat的Repository。
Registry:鏡像的倉庫,比如官方的是Docker Hub,它是開源的,也可以自己部署一個,Registry上有很多的Repository,Redis、Tomcat、MySQL等等Repository組成了Registry。
四. 總結
Docker的理解和使用非常簡單,但是在這之前我們得知道Docker到底解決了我們什么問題?這個中間價是如何給我們的應用賦能的?
作為一個開發(fā)者,我們應該仔細思考我們的選型,不要為了架構而架構,那就脫離技術的初衷了。
Reference
https://hub.docker.com/editions/community/docker-ce-desktop-mac
https://zhuanlan.zhihu.com/p/23599229
https://docs.docker.com/get-started/
歡迎關注我的博客:https://blog.wyatt.plus