人生苦短,我用 Python
前文傳送門:
小白學 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,你們可能就要想想自己之前的操作了。
本篇文章到這里就結束了,希望各位同學能自己動手實踐一下,畢竟實踐出真知嘛。