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

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

人生苦短,我用 Python


前文傳送門:




Docker 基礎

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

小白學 Python 爬蟲(4):前置準備(三)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. 用戶可以方便地創建和使用容器,把自己的應用放入容器。
小白學 Python 爬蟲(4):前置準備(三)Docker基礎入門

Docker 容器的特點:

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

為什麼要用Docker:

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

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

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

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

Docker 安裝

Win10 下的安裝

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

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

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

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

下載完成後默認配置 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

驗證結果:

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

Docker 基礎

首先了解兩個概念:

鏡像:Docker 鏡像是用於創建 Docker 容器的模板。

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

講人話就是鏡像可以是我們自己的程序,也可以是第三方廠商提供的組件,比如數據庫,緩存服務等等,而這個鏡像想要運行的話,就要放在容器裡面運行,它自己是不能單獨運行的,就好比炒菜,光有菜不行,還要有鍋,菜是在鍋裡炒出來的。

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

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

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

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

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

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

獲取鏡像

語法:docker pull NAME[:TAG]
其中,NAME是鏡像倉庫的名稱(用來區分鏡像),TAG是鏡像的標籤(用來表示版本信息)

查看鏡像

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

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

搜索鏡像

語法:docker search [image-name]
從docker倉庫搜索docker鏡像

刪除鏡像

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

實戰 hello-world

首先輸入 docker pull hello-world 來拉取 hello-world 鏡像:

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

拉取成功後,我們使用 docker images 來查看下這個 hello-world 鏡像 :

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

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

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

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

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

參考

http://dockone.io/article/6051


分享到:


相關文章: