小白學 Python 爬蟲(4):前置準備(三)Docker基礎入門
人生苦短,我用 Python
前文傳送門:
小白學 Python 爬蟲(1):開篇
小白學 Python 爬蟲(2):前置準備(一)基本類庫的安裝
小白學 Python 爬蟲(3):前置準備(二)Linux基礎入門
Docker 基礎
首先說一件事情,就在本文寫作前一天,Mirantis 這家公司宣佈收購了 Docker 的企業業務和團隊。並且在官網上也掛出了相關的文字。
沒別的意思,相關的新聞通告一下。
Docker 官網地址:https://www.docker.com/
什麼是 Docker ?
emmmmm,說實話,Docker 是什麼並不好說,下面通過四點大致解釋下 Docker 到底是個什麼東西。
- Docker 是全球領先的軟體容器平臺。
- Docker使用Google公司推出的Go語言進行開發實現,基於Linux核心的cgroup,namespace,以及AUFS類的UnionFS等技術,對程序進行封裝隔離,屬於作業系統層面的虛擬化技術。
- 由於隔離的程序獨立於宿主和其它的隔離的程序,因此也稱其為容器。Docke最初實現是基於LXC。
- 使用者可以方便地建立和使用容器,把自己的應用放入容器。
Docker 容器的特點:
- 輕量化:在一臺機器上執行的多個Docker容器可以共享這臺機器的作業系統核心;它們能夠迅速啟動,只需佔用很少的計算和記憶體資源。映象是通過檔案系統層進行構造的,並共享一些公共檔案。這樣就能儘量降低磁碟用量,並能更快地下載映象。
- 標準化:Docker容器基於開放式標準,能夠在所有主流Linux版本、Microsoft Windows以及包括VM、裸機伺服器和雲在內的任何基礎設施上執行。
- 安全: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