Mac環(huán)境下Docker的初識和運(yùn)用

最近因?yàn)橥ㄟ^hexo搭建了一個簡易的個人靜態(tài)博客,因?yàn)橄訔塰exo部署冗雜的步驟,所以研究了一些自動化部署的機(jī)制,其中就了解到了Docker,粗略的研究了下后,想跟大家一起分享下個人的一些心得理解

一、官方簡介

Docker 是一個開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴 > 包到一個可-移植的容器中,然后發(fā)布到任何流行的Linux機(jī)器上,也可以實(shí)現(xiàn)> 虛擬化,容器是完全使用沙-箱機(jī)制,相互之間不會有任何接口。

看完這個介紹,我反而是有了很多的疑惑和不解,比如說,什么是應(yīng)用容器,什么是虛擬化,相互之間不會有任何接口是什么意思?下面一起來仔細(xì)研究下Dockers到底是個什么鬼

二、應(yīng)用容器

其實(shí)從字面上理解的話,應(yīng)用容器應(yīng)該就是裝載一些Application(應(yīng)用)的一個容器吧,那這個容器應(yīng)該長什么樣子呢?其實(shí)大家可以先自行想象一下手機(jī)里面的APP是不是就是運(yùn)行在各樣的系統(tǒng)之中呢,所以,先暫時可以把容器理解成手機(jī)的樣子。舉個簡單的例子,客戶端開發(fā)一般調(diào)試離不開模擬器,iOS的模擬器可以說相當(dāng)?shù)膹?qiáng)大,除了不能打電話,其他的基本上都和真機(jī)差不多了,那么在電腦中要跑一個類似于手機(jī)的東東,就需要配置和手機(jī)類似的的運(yùn)行環(huán)境,而模擬器就相當(dāng)于這個容器,你運(yùn)行的時候,可以不必要自己去開一個虛擬機(jī),部署一個iOS的運(yùn)行環(huán)境了,可以然你專注于測試你的代碼,這就是容器的最大的作用無需硬件,操作系統(tǒng),運(yùn)行環(huán)境等,只需要運(yùn)行起來這個容器就好了,當(dāng)然,容器的好處遠(yuǎn)遠(yuǎn)不止這些,比如更仿真的模擬線上環(huán)境進(jìn)行測試,自動化部署機(jī)制,有著較高的隔離性和安全性,極大的節(jié)省資源等等好處,所以由此來看,容器的作用和好處還是蠻大的,其實(shí)說白了,Dockers就是一個輕量級的虛擬機(jī)而已。

三、Docker的基本架構(gòu)

Docker 的核心組件包括:

- docker 客戶端 - Client

- Docker 服務(wù)器 - Docker daemon

- Docker 鏡像 - Image

- Registry 倉庫

- Docker 容器 - Container

Docker 架構(gòu)如下圖所示:

Docker 采用的是 Client/Server 架構(gòu)??蛻舳讼蚍?wù)器發(fā)送請求,服務(wù)器負(fù)責(zé)構(gòu)建、運(yùn)行和分發(fā)容器。客戶端和服務(wù)器可以運(yùn)行在同一個 Host 上,客戶端也可以通過 socket 或 REST API 與遠(yuǎn)程的服務(wù)器通信。

Docker 客戶端

最常用的 Docker 客戶端是 docker 命令。通過 docker 我們可以方便地在 Host 上構(gòu)建和運(yùn)行容器。docker 支持很多操作(子命令)。除了 docker 命令行工具,用戶也可以通過 REST API 與服務(wù)器通信。

Docker 服務(wù)器

Docker daemon 是服務(wù)器組件,以 Linux 后臺服務(wù)的方式運(yùn)行。 Docker daemon 運(yùn)行在 Docker host 上,負(fù)責(zé)創(chuàng)建、運(yùn)行、監(jiān)控容器,構(gòu)建、存儲鏡像。

Docker 鏡像

可將 Docker 鏡像看著只讀模板,通過它可以創(chuàng)建 Docker 容器。

例如某個鏡像可能包含一個 Ubuntu 操作系統(tǒng)、一個 Apache HTTP Server 以及用戶開發(fā)的 Web 應(yīng)用。鏡像有多種生成方法:

1.可以從無到有開始創(chuàng)建鏡像

2.也可以下載并使用別人創(chuàng)建好的現(xiàn)成的鏡像

3.還可以在現(xiàn)有鏡像上創(chuàng)建新的鏡像

我們可以將鏡像的內(nèi)容和創(chuàng)建步驟描述在一個文本文件中,這個文件被稱作 Dockerfile,通過執(zhí)行 docker build命令可以構(gòu)建出 Docker 鏡像

Docker 容器

Docker 容器就是 Docker 鏡像的運(yùn)行實(shí)例。

用戶可以通過 CLI(docker)或是 API 啟動、停止、移動或刪除容器??梢赃@么認(rèn)為,對于應(yīng)用軟件,鏡像是軟件生命周期的構(gòu)建和打包階段,而容器則是啟動和運(yùn)行階段。

Docker Registry

Registry 是存放 Docker 鏡像的倉庫,Registry 分私有和公有兩種。

DockerHub(https://hub.docker.com/)是默認(rèn)的 Registry,由 Docker 公司維護(hù),上面有數(shù)以萬計的鏡像,用戶可以自由下載和使用。

出于對速度或安全的考慮,用戶也可以創(chuàng)建自己的私有 Registry。后面我們會學(xué)習(xí)如何搭建私有 Registry。

docker pull 命令可以從 Registry 下載鏡像。

docker run 命令則是先下載鏡像(如果本地沒有),然后再啟動容器。

看完上面的內(nèi)容基本還是對Docker有了一個比較基礎(chǔ)的認(rèn)識,關(guān)于docker的安裝,docker命令的使用,docker的設(shè)計原理等。

四、Docker for Mac的安裝使用

? ? ?上面講了docker的一些基本組件,似乎還是不能讓你豁然開朗,那好吧,誰讓現(xiàn)在已經(jīng)步入了工程化編碼的時代呢,接下來我們用一系列的工具和簡單的命令來操作我們的docker這樣會讓你甚至不用了解它就可以讓他為你所用了

? ?因?yàn)槲矣玫氖莔ac系統(tǒng),所以我就機(jī)遇MAC來進(jìn)行一些操作,其他的環(huán)境小伙伴們可以自行度娘,原理都一樣,一通百通。首先給大家分享2個工具,官網(wǎng)下載是在太慢,我把它放到百度云里免除大家被墻的痛苦和煎熬 分別是:Docker for mac 和DockerToolbox

為什么使用Docker for Mac

? ? 啟動時不需要再使用dokcer-machine設(shè)定啟動的默認(rèn)的環(huán)境,省去了使用virtualbox的過程;

? ? 享受和在linux下使用docker一樣的體驗(yàn). 總之,新工具更方便!

mac下啟動docker的工具發(fā)展

? ?最開始使用boot2docker

? ?再到Docker Toolbox ?

? ?最近新出的 Docker for Mac

使用Docker for Mac的一些要求

1. Mac must be a 2010 or newer model, with Intel’s hardware support for memory management unit (MMU) virtualization; i.e., Extended Page Tables (EPT)

2. OS X 10.10.3 Yosemite or newer

3. At least 4GB of RAM

4. VirtualBox prior to version 4.3.30 must NOT be installed (it is incompatible with Docker for Mac)

主要就是看看你的MAC版本要高于10.10.3 內(nèi)存要大于4G 而且如果安裝過VirtualBox的話,他的版本不能高于4.3.30 (這個其實(shí)是有點(diǎn)坑的,影響了我本地虛擬的python環(huán)境)沒辦法

鏈接:https://pan.baidu.com/s/1i57oY4d密碼: nds2

好了,下載完成以后安裝Docker for Mac

打開下載后的鏡像文件:


將Docker拖入Applications即可。

在Applications中打開裝好的Docker,看到Docker的歡迎頁面,說明安裝成功了。


按照提示,一路往下走,最終會看到Docker已經(jīng)運(yùn)行的頁面。


最終 在你的Launchpad中顯示如下3個ICON就是已經(jīng)完成安裝成功了


接下來檢查下版本信息


$docker --version

Docker version 17.03.1-ce-rc1, build 3476dbf

$docker-compose --version

docker-compose version 1.11.2, build dfed245

$docker-machine --version

docker-machine version 0.10.0, build 76ed2a6

至此說明已經(jīng)安裝成功

總結(jié):

新發(fā)布的docker for mac工具簡化了啟動docker的配置,如果之前使用了boot2docker或者docker toolbox,由于兩者使用的虛擬機(jī)不同,docker-for-mac工具不兼容之前的虛擬機(jī),所以在更新工具時需要清除之前的配置包括卸載虛擬機(jī)和修改環(huán)境變量等等。

具體的兩者的工具的比較詳見這里

創(chuàng)建容器并運(yùn)行它

我們下載的可視化工具終于要大顯身手了,哈哈


點(diǎn)擊左上角的 new按鈕創(chuàng)建新的容器,因?yàn)樵赿ockerHUB上面已經(jīng)有很多的鏡像容器供我們使用了,所以,我們可以直接下載使用,我在這里下載了三個,因?yàn)槲抑饕菫榱酥谱鱤exo鏡像所以可以再搜索框中搜索hexo下載量最高的一個使用

再下載之前還需要解決一個問題,因?yàn)楸娝苤脑?,dockerhub的鏡像元下載會非常之慢,我們需要首先切換鏡像元,還好國內(nèi)有家叫DaoCloud的公司幫我們免費(fèi)解決了這個問題,首先要登錄其官網(wǎng).進(jìn)行注冊流程,該流程不在贅述,注冊完成之后進(jìn)入該頁面


點(diǎn)擊加速器,進(jìn)入之后選擇MAC系統(tǒng),給直接給你奮發(fā)一個鏡像鏈接然后將其如下圖添加



添加完成之后點(diǎn)擊apply重新運(yùn)行

然后再下載容器,你會發(fā)現(xiàn)嗖嗖的~~

下載完成之后,要重新設(shè)置鏡像的掛載,可視化工具果然是方便啊在這里切換成你的文件夾路徑即可,返回Kitematic頁面進(jìn)行重啟容器然后測試下




總結(jié):采用docker搭建個人博客,會讓你省去切換電腦而需要重新部署hexo環(huán)境的麻煩而專注于博客本身,豈不是好事一件?接下來我會實(shí)現(xiàn)一個docker+hexo+github+coding+Travis來實(shí)現(xiàn)我的個人博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容