什麼是 Docker ?書中的原話是:linux
Docker 是一個可以把開發的應用程序自動部署到容器的開源引擎。docker
若是你和我同樣是第一次接觸 Docker 和容器化技術,那麼你多是不理解這句話到底在說什麼,那麼咱們不妨先來看看 Docker 可以作什麼,而後再來看看什麼是 Docker。shell
一樣的咱們先來看看書上是咋說的:bash
- 加速本地開發和構建流程,使其更加高效、更加輕量化。本地開發人員能夠構建、運行並分享 Docker 容器。容器能夠再開發環境中構建,而後輕鬆的提交到測試環境中,並最終進入生產環境。
- 可以讓獨立的服務後應用程序在不一樣的環境中,獲得相同的運行結果。
- 用 Docker 建立隔離的環境來進行測試。
- Docker 可讓開發者如今本機上構建一個複雜的程序或架構進行測試,而不是一開始就在生產環境部署、測試。
- 爲開發、測試提供一個輕量級的獨立的沙盒環境。
- 構建一個多用戶平臺的及服務( PaaS )基礎設施。
- 提供軟件即服務( SaaS )應用程序。
- 高性能、超大規模的宿主機部署。
好吧,我認可當我第一次看完的時候我依舊是一臉懵逼,徹底不知道這本書在說什麼,你也有這種感受嗎?架構
咱們不妨來回顧一下以前的項目運做的流程,首先會有需求,至於需求來自於何處這裏咱們不作關心,而後 開發人員 會對需求進行分析,而後開始編碼,而後開發人員會在本地進行測試,有問題就會繼續改進,知道測試沒有問題,就會提交代碼,告訴 測試人員 能夠測試了,而後測試人員就和拉去最新的代碼,開始構建環境,讓項目跑起來,而後進行一系列的測試,發現一大堆 BUG ,而後去找開發去修復 BUG 。性能
上面的所描述的流程目前看起來還與咱們的 Docker 沒有什麼關係,咱們接着向下看,當測試去找開發的時候,若是你是一個開發人員的話,你的第一反應是什麼?測試
「我寫的代碼這麼可能會有 BUG ,我在本地明明都好着,確定是測試環境的問題」,可是真的沒有 BUG 嗎?這個咱們沒法作出假設,可是確確實實存在的一種狀況是測試與開發環境之間的差別,最簡單的開發是在 MAC 上進行的開發,而後測試在 Linux 或 Windows 上測試,那麼這個問題就頗有多是環境的問題。ui
我還記得我剛開始玩 Linux 的時候常常遇到這種狀況,按照某篇博客安裝應用以後卻沒法啓動,查看以後發現時依賴的問題,要麼是缺乏某個依賴,這種狀況仍是能夠輕鬆的解決的,可是最怕的是依賴的版本不對,這就種狀況就及其的麻煩,是這篇博客寫的不對嗎?恐怕不是,形成這種緣由的罪魁禍首就是你與博客做者之間的系統環境不一致。編碼
那麼 Docker 能夠爲咱們作什麼?看看上面列舉的第二條與第三條:spa
- 可以讓獨立的服務後應用程序在不一樣的環境中,獲得相同的運行結果。
- 用 Docker 建立隔離的環境來進行測試。
這是否是咱們所指望的呢!
其實 Docker 解決的一個最核心的問題就是爲不一樣的用戶提供一個相同的虛擬化環境,這樣你們就能夠在相同的環境中進行開發、測試和部署,這樣你就不會抱怨某篇博客垃圾了。
固然 Docker 的能力不只於此,畢竟咱們在前面寫了 8 條 Docker 可以完成的事情(前五條都是圍繞上面說的虛擬化環境的問題),只有你想不到的,沒有 Docker 作不到的。
在關於什麼是 Docker 這個話題上,不一樣的有着不一樣的觀點,大多數博客或書籍都會告訴你一個正式的概念,或者告訴你 Docker 是有 Docker 公司發開的、開源的,當時對於一個剛剛接觸 Docker 與容器方面技術的一個初學者來講,這並不能解決你心中的疑惑,你依舊想問一個問題:什麼是 Docker?
上文也只是從做者本身的角度來看看 Docker 究竟是什麼,能夠解決你的疑惑嗎?我認爲並不能,我也不但願只是經過本文就能夠解決你心中的疑惑。
若是對此有疑問,做者在這裏建議你不妨去嘗試一下 Docker 能作什麼,而後再去思考 Docker 是什麼這個問題。
請參照官方教程!!!
請參照官方教程!!!
請參照官方教程!!!
不要在網上看什麼亂七八糟的教程、博客,記住安裝就去看官方教程,這是血淚的教訓。
這裏連一些技術書籍上的安裝教程也不建議參考,書上的教程可能會有一些落後,畢竟在做者寫書以後技術依然在不斷的發展
官方教程提供了 Mac 、 Windows 、常見的 Linux 髮型版本等等對應的教程,就連 AWS 等雲平臺的教程都有,相信我總有一款適合你。
這裏有一點須要注意的是 Docker 目前提供兩個版本,分別是 Docker CE 和 Docker EE ,其中 Docker EE 是 Docker 公司提供的商業版本,咱們通常安裝的是 Dcoker CE 。
Docker 採起的是 C/S 架構的方式,即客戶端與服務端,所以在安裝 Docker 的時候通常須要所有安裝(至少要安裝服務端),所以在驗證的時候也會驗證這兩部分是否都安裝成功,很是簡單,一條命令就能夠搞定:
$ docker version
Client:
Version: 18.09.7
API version: 1.39
Go version: go1.10.8
Git commit: 2d0083d
Built: Thu Jun 27 17:56:06 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.7
API version: 1.39 (minimum version 1.12)
Go version: go1.10.8
Git commit: 2d0083d
Built: Thu Jun 27 17:26:28 2019
OS/Arch: linux/amd64
Experimental: false
複製代碼
這裏直接輸出 Docker 的版本信息,觀察輸出你能夠發現分別輸出了 Client 和 Server 這兩部分的版本信息,此時就安裝成功了。
上面是 Docker 安裝成功以後,而且正常運行的輸出結果,可是有一種狀況下會出現以下的輸出:
Client:
Version: 18.09.7
API version: 1.39
Go version: go1.10.8
Git commit: 2d0083d
Built: Thu Jun 27 17:56:06 2019
OS/Arch: linux/amd64
Experimental: false
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
複製代碼
出現這種狀況是由於 Docker Service 沒有啓動,啓動它就行:
# 在 CentOS 7 上啓動 Docker 服務
$ systemctl start docker
複製代碼