1. 程式人生 > >小白學 Python 爬蟲(4):前置準備(三)Docker基礎入門

小白學 Python 爬蟲(4):前置準備(三)Docker基礎入門

人生苦短,我用 Python

前文傳送門:

小白學 Python 爬蟲(1):開篇

小白學 Python 爬蟲(2):前置準備(一)基本類庫的安裝

小白學 Python 爬蟲(3):前置準備(二)Linux基礎入門

Docker 基礎

首先說一件事情,就在本文寫作前一天,Mirantis 這家公司宣佈收購了 Docker 的企業業務和團隊。並且在官網上也掛出了相關的文字。

沒別的意思,相關的新聞通告一下。

Docker 官網地址:https://www.docker.com/

什麼是 Docker ?

emmmmm,說實話,Docker 是什麼並不好說,下面通過四點大致解釋下 Docker 到底是個什麼東西。

  1. Docker 是全球領先的軟體容器平臺。
  2. Docker使用Google公司推出的Go語言進行開發實現,基於Linux核心的cgroup,namespace,以及AUFS類的UnionFS等技術,對程序進行封裝隔離,屬於作業系統層面的虛擬化技術。
  3. 由於隔離的程序獨立於宿主和其它的隔離的程序,因此也稱其為容器。Docke最初實現是基於LXC。
  4. 使用者可以方便地建立和使用容器,把自己的應用放入容器。

Docker 容器的特點:

  1. 輕量化:在一臺機器上執行的多個Docker容器可以共享這臺機器的作業系統核心;它們能夠迅速啟動,只需佔用很少的計算和記憶體資源。映象是通過檔案系統層進行構造的,並共享一些公共檔案。這樣就能儘量降低磁碟用量,並能更快地下載映象。
  2. 標準化:Docker容器基於開放式標準,能夠在所有主流Linux版本、Microsoft Windows以及包括VM、裸機伺服器和雲在內的任何基礎設施上執行。
  3. 安全:Docker賦予應用的隔離性不僅限於彼此隔離,還獨立於底層的基礎設施。Docker預設提供最強的隔離,因此應用出現問題,也只是單個容器的問題,而不會波及到整臺機器。

為什麼要用Docker:

  • Docker的映象提供了除核心外完整的執行時環境,確保了應用執行環境一致性,從而不會再出現“這段程式碼在我機器上沒問題啊”這類問題;——一致的執行環境
  • 可以做到秒級、甚至毫秒級的啟動時間。大大的節約了開發、測試、部署的時間。——更快速的啟動時間
  • 避免公用的伺服器,資源會容易受到其他使用者的影響。——隔離性
  • 善於處理集中爆發的伺服器使用壓力;——彈性伸縮,快速擴充套件
  • 可以很輕易的將在一個平臺上執行的應用,遷移到另一個平臺上,而不用擔心執行環境的變化導致應用無法正常執行的情況。——遷移方便
  • 使用Docker可以通過定製應用映象來實現持續整合、持續交付、部署。——持續交付和部署

說起容器,與虛擬機器的比較是一個永恆的話題,因為它做的事情和虛擬機器做的事情非常的接近。

傳統虛擬機器技術是虛擬出一套硬體後,在其上執行一個完整作業系統,在該系統上再執行所需應用程序;而容器內的應用程序直接運行於宿主的核心,容器內沒有自己的核心,而且也沒有進行硬體虛擬。因此容器要比傳統虛擬機器更為輕便。

Docker 安裝

Win10 下的安裝

首先介紹一下 win 環境下 Docker 的安裝,開啟官網,下載最新版的 Docker Desktop 。

Docker 官方下載地址: https://www.docker.com/products/docker-desktop

下載前可能需要先註冊下 Docker Hub ,註冊完成後會直接跳轉下載頁面。

下載完成後預設配置 next 就好了。

驗證:

在 CMD 命令列中執行:

docker info

請確保 Docker 正常啟動狀態,否則會報錯的。

小編本地電腦執行後顯示如下:

Client:
 Debug Mode: false

Server:
 Containers: 26
  Running: 0
  Paused: 0
  Stopped: 26
 Images: 28
 Server Version: 19.03.1
 ...

內容有些多,我就不全貼出來了,主要會顯示一些當前 Docker 相關的資訊。

CentOS 下的安裝

懶人神器,使用 CentOS 下的包管理工具 yum 進行安裝,直接輸入:

yum install docker

然後靜靜等待進度條走完,驗證命令和上面一致,同樣需確保 Docker 服務正常啟動。

CentOS 中 Docker 基本操作命令:

# docker 啟動
systemctl start docker
# 重啟 docker服務
systemctl restart docker
# 關閉 docker 服務
systemctl stop docker

驗證結果:

Docker 基礎

首先了解兩個概念:

映象:Docker 映象是用於建立 Docker 容器的模板。

容器:容器是獨立執行的一個或一組應用。

講人話就是映象可以是我們自己的程式,也可以是第三方廠商提供的元件,比如資料庫,快取服務等等,而這個映象想要執行的話,就要放在容器裡面執行,它自己是不能單獨執行的,就好比炒菜,光有菜不行,還要有鍋,菜是在鍋裡炒出來的。

因為 Docker 預設的映象源是在遙遠的太平洋彼岸,訪問速度會有些慢,建議各位同學配置一個國內的映象源。

國內的映象源有很多的,百度一下可以找到很多,小編這裡使用的阿里雲提供的容器映象加速服務,大家可以登入自己的淘寶賬號,在阿里雲上找到容器映象服務:

具體的配置方案阿里雲已經提供出來了,小編這裡不再贅述,大家自己登入阿里雲檢視吧。

上面這些都配置完成後,我們來講幾個最基礎的 Docker 命令:

獲取映象

語法:docker pull NAME[:TAG]
其中,NAME是映象倉庫的名稱(用來區分映象),TAG是映象的標籤(用來表示版本資訊)

檢視映象

語法:docker images

可以看到,小編的機器上目前有一個 mysql5.7 映象。

搜尋映象

語法:docker search [image-name]
從docker倉庫搜尋docker映象

刪除映象

語法:docker rmi NAME
用來刪除指定映象,其中後面的引數可以是tag,如果是tag時,實際上是刪除該tag,只要該映象還有其他tag,就不會刪除該映象。當後面的引數為映象ID時,則會徹底刪除整個映象,連通所有標籤一同刪除

實戰 hello-world

首先輸入 docker pull hello-world 來拉取 hello-world 映象:

拉取成功後,我們使用 docker images 來檢視下這個 hello-world 映象 :

好了,我們已經看到這個 hello-world 映象了,現在來嘗試一下啟動,使用命令 docker run hello-world

若是出現了上圖的內容則說明hello-world執行成功,如果沒出現的話,emmmmmmmmmm,你們可能就要想想自己之前的操作了。

本篇文章到這裡就結束了,希望各位同學能自己動手實踐一下,畢竟實踐出真知嘛。

參考

http://dockone.io/article/6051