Docker入門級介紹:Docker的簡介、Docker的安裝及常用的鏡像命令和容器命令

     程序員在項目部署的時候,經常會出現這種狀況:運維人員說項目有問題,運行不起來;然後你就理直氣壯的說,項目沒一點問題,你來看看我本地,運行的十分良好......結果主要問題被擱置,討論起無關緊要的責任問題。不過就這個結果,開發人員沒錯,運維人員也沒錯,錯就錯在沒有打包起一套項目的運行環境,因爲項目到生產環境中運行,不但要有代碼,還要有基礎運行環境,依賴的包,依賴的其他應用等,這時就要給大家隆重介紹打包神器--Docker,讓離開了本地就水土不服的項目,到任何地方都得大寫的服!

Docker的定義是:Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然後發佈到任何流行的 Linux 或 Windows 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。

看了它的定義,有人就會恍然大悟的說:哦,我還以爲多神奇,原來就是個虛擬機唄!這樣理解是正確的嗎?我們先來看看官方給出的 Docker 容器和傳統虛擬機的對比圖:

顯然恍然大悟的人只是恍然了,大悟的並不是很對,從上圖可以很直觀的看出來,虛擬機是首先要在宿主機上安裝一個能運行虛擬機的軟件,然後在軟件上面創建虛擬機,再分配內存、分配磁盤、安裝 Linux 操作系統等等一系列的操作,傳統虛擬機技術是虛擬出一套硬件後,在其上面運行一個完整的操作系統,然後在該系統上面再運行所需要的應用程序;而 Docker 容器內的應用程序是直接運行於宿主的內核,容器沒有自己的內核,更加不會對硬件進行虛擬。因此 Docker 容器比傳統的虛擬機更爲輕便!但是 Docker 容器技術也是參考虛擬機一步一步的迭代優化過來的!

Docker 是一個 Client-Server 的結構!這點可以參考MySQL的設計,先看看官網給出的架構圖:

1、Docker 客戶端:用戶與 Docker 服務交互的窗口,用來進行命令操作;

2、Docker 服務:Docker 後臺運行的服務,Docker Deamon 監聽着客戶端的請求,並且管理着 Docker 的鏡像、容器、網絡、磁盤等對象。

3、倉庫:遠程下載常用的鏡像,也可以 Push 包到遠程倉庫(如Redis、Nginx 等鏡像)

講到了這裏,又出現了一對比較容易搞混的名詞:容器和鏡像。

Docker 鏡像是一個只讀模板,可以用來創建 Docker 容器。鏡像是一種輕量級的、可執行的獨立軟件包,用來打包軟件運行環境和基於運行環境開發的軟件。它包含運行某個軟件所需要的所有的內容,包括代碼、運行時、庫、環境變量、配置文件等。Docker 的容器是用鏡像創建的運行實例,Docker 可以利用容器獨立運行一個或一組應用。我們可以使用客戶端或者 API 控制容器的啓動、開始、停止、刪除。每個容器之間是相互隔離的。就像我們在應用開發時,鏡像就是我們創建的類,而容器是我們要在業務中用到這個類,要對這個類進行實例化。

我們先用一些簡單的命令來初窺一下Docker。

1、docker version:查看 Docker 客戶端和服務的版本。

2、docker info:查看 Docker 的基本信息,如有多少容器、多少鏡像等。

3、docker --help:查看 Docker 的幫助信息,這個命令可以查看所有 Docker 支持的命令

4、docker images:查看本地主機上所有的鏡像。

以上是我們對Docker做了簡單介紹,有了一個猶抱琵琶半遮面的認識,現在就揭開這半面黑紗,從Docker的安裝到常用的一些操作命令,我們一步步的去熟悉它!

我的電腦是Mac,可以通過brew來安裝docker,命令是:brew cask install docker,這個安裝會比較耗時,如果是其他的系統,官方也提供了相對的安裝及使用教程:

下面就是我用Mac的brew工具來進行安裝:

中間還有一次斷開了,不過耗時一個多小時,還是安裝完成了,最後我的終端顯示了一杯啤酒,這就是成功安裝,小酒喝起來。打開應用,可以看到有Docker的圖標:

點擊這個圖標,就可以啓動docker服務了!這是在終端輸入docker -v來驗證一下:

成功啓動,下面來介紹一些常用的Docker命令:鏡像命令和容器命令。

鏡像命令:

1、docker images:查看本地主機上所有的鏡像

現在我本地主機還沒有相關鏡像,我先去倉庫里拉取幾個,以便後續的演示!

還可以通過docker images 應用名 指定某個具體的鏡像查看對應信息:

2、docker rmi:刪除本地的鏡像,加上 -f 參數進行強制刪除

3、docker search:根據鏡像名稱搜索遠程倉庫中的鏡像

4、docker pull:從遠程拉取鏡像,可以指定版本號,如果不指定版本號,將會下載最新版本的應用;

指定版本號命令是:docker pull tomcat:版本號

容器命令:

相關的鏡像命令我們已經介紹過了,那麼再來介紹一下容器命令就完美了!

1、docker run [OPTIONS] IMAGE [COMMAND] [ARG...]:基於指定的鏡像運行一個容器,如果本地有指定的鏡像則使用本地鏡像,如果沒有則從遠程拉取對應的鏡像然後啓動!

常用參數如下:

-d:啓動容器,並且後臺運行

-i:以交互模式運行容器,通常與 -t 同時使用

-t:爲容器重新分配一個僞輸入終端,通常與 -i 同時使用

-P:隨機端口映射,容器內部端口隨機映射到主機的端口。

-p:指定端口映射,格式爲:宿主機端口:容器端口。

-v:建立宿主機與容器目錄的同步。

--name="自定義名稱":爲容器指定一個名稱,不指定會產生隨機的名字)

我們來運行剛拉取的tomcat鏡像,命令如下:

tomcat運行起來了,docker容器的端口8080映射到宿主機的端口8090,這時訪問宿主機的8090端口,就是訪問docker中8080端口對應的服務:

這個熟悉的界面又展現到我們眼前了!由於啓動的時候加上了-t 的參數,所以容器啓動後就進入到了容器的內部的命令窗口,打印了很多 Tomcat 啓動的日誌。

2、docker ps:該命令查看正在運行的容器的信息,這裏能看到容器的唯一 id,啓動時間等等,docker ps -a 可以查看運行中與停止的所有容器

3、docker attach [OPTIONS] CONTAINER:運行這個命令會進入容器內部

4、docker exec [OPTIONS] CONTAINER:這個命令與 attach 一樣都可以再次進入後臺運行的容器,但是該命令可以不進入容器而在運行的容器中執行命令!比 attach 更加強大!

5、docker stop、docker kill、docker restart:這三個命令分別用來停止容器、強制停止容器和重啓容器

6、docker rm:使用這個命令就可以刪除某個容器,因爲通過 Stop 和 Kill 停止的容器還存在於 Docker 中,而使用 rm 命令操作後的容器將不再存在!

關於Docker的安裝,鏡像相關命令以及容器相關的命令就介紹到這裏,自己動手試一下吧!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章