Docker快速上手-以部署node.js環(huán)境為例

Docker簡介

Docker 是一個開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。

docker的英文本意是碼頭工人,也就是搬運(yùn)工,這種搬運(yùn)工搬運(yùn)的是集裝箱(Container),集裝箱里面裝的可不是商品貨物,而是任意類型的App,Docker把App(叫Payload)裝在Container內(nèi),通過Linux Container技術(shù)的包裝將App變成一種標(biāo)準(zhǔn)化的、可移植的、自管理的組件,這種組件可以在你的latop上開發(fā)、調(diào)試、運(yùn)行,最終非常方便和一致地運(yùn)行在production環(huán)境下。[1]

那Image和Container的區(qū)別是什么?很簡單,他們的區(qū)別僅僅是一個是只讀的層,一個是可寫的層,你可以使用docker commit 命令,將你的Container變成一個Image,也就是提交你所運(yùn)行的Container的修改內(nèi)容,變成一個新的只讀的Image,這非常類似于git commit命令,感覺真棒!

容器 v.s. 虛擬機(jī)[2]

這兩者到底什么區(qū)別,我們不細(xì)說,只上個總結(jié):

  • 容器是軟件虛擬化,而虛擬機(jī)是硬件虛擬化
  • 容器是利用操作系統(tǒng)(linux kernel)特性創(chuàng)建的一個 進(jìn)程

容器是什么
本質(zhì)上來說,容器其實(shí)就是一個特殊的進(jìn)程。相比于普通進(jìn)程,這個進(jìn)程(容器)之所以特殊,
是因?yàn)樗凶约邯?dú)立的

  • UTS(Unix Time-sharing System):可以擁有獨(dú)立的主機(jī)名和域名
  • PID:可以擁有獨(dú)立的進(jìn)程ID
  • NET: 可以擁有獨(dú)立的網(wǎng)絡(luò)設(shè)備
  • IPC:可以擁有獨(dú)立的進(jìn)程間通訊
  • NS:可以擁有獨(dú)立的文件系統(tǒng)(rootfs)
    每個方面都是一種namespace,如果一個進(jìn)程擁有這些獨(dú)立的namespace,便可以跟其他進(jìn)程隔離開來,
    那么該進(jìn)程看起來是不是就像一個獨(dú)立的主機(jī)呢?對,這就達(dá)到我們的目的啦!

安裝方式

docker的安裝方式目前查到的有好幾種,比如通過boot2Docker命令行等,不過官方提供了Docker Toobox來大大方便了我們在非linux系統(tǒng)輕松安裝上docker,本文也將使用docker官方提供的方式進(jìn)行安裝

Docker Toolbox 提供了以下工具:

  • 用于運(yùn)行 docker-machine 二進(jìn)制文件的 Docker Machine
  • 用于運(yùn)行 docker 二進(jìn)行文件的 Docker Engine
  • 用于運(yùn)行 docker-compose 二進(jìn)行文件的 Docker Compose (Mac 特有)
  • Kitematic,Docker 的圖形用戶界面
  • 用于 Docker 命令行環(huán)且預(yù)先配置好的 shell
  • Oracle VM VirtualBox

由于 Docker 的后臺程序使用了 Linux 特有的內(nèi)核特性,所以您不能直接在 OS X 上運(yùn)行 Docker。相反,您必須使用 docker-machine 來創(chuàng)建并附加一臺虛擬機(jī)(VM)。該虛擬機(jī)需要安裝 Linux 操作系統(tǒng)以便在您 Mac 機(jī)上運(yùn)行 Docker。

安裝

  1. 下載Toolbox
    T國內(nèi)用戶很遺憾,官方地址被墻,通過官方地址下載toobox安裝沒法完成,我找到了國內(nèi)的源,網(wǎng)址貼上http://get.daocloud.io/#install-toolbox, 點(diǎn)擊進(jìn)入下載操作系統(tǒng)對應(yīng)的版本就好了
  2. 點(diǎn)擊下載文件進(jìn)行安裝
    跟著步驟一路點(diǎn)繼續(xù)就好了,走到最后一步,點(diǎn)擊左邊的圖標(biāo)queck start,這時會開啟一個命令行,然后開始下載boot2docker.iso鏡像,下載完成后會創(chuàng)建一個default虛擬機(jī),完成之后如下圖所示:

    本人是在OS X中進(jìn)行安裝的,其他操作系統(tǒng)安裝請點(diǎn)擊這里

使用Docker

創(chuàng)建docker mechine

其實(shí)已經(jīng)創(chuàng)建好啦一個叫default的docker machine(可以想象為一個虛擬機(jī)), 我們可以再手動創(chuàng)建一個便于后續(xù)比較理解

docker-machine creat --driver virtualbox docker-node

執(zhí)行命令后,我們便創(chuàng)建了一個由virtualbox驅(qū)動的名稱叫做docker-node的docker-machine

查看創(chuàng)建的docker mechine

docker-machine ls

這時可以從看到剛才創(chuàng)建的虛擬機(jī)和安裝docker時創(chuàng)建的default虛擬機(jī),active為*表示當(dāng)前被激活的虛擬機(jī),url表示訪問到虛擬機(jī)到獨(dú)立ip

查看docker mechine的環(huán)境變量

docker-machine env docker-node

設(shè)置docker mechine為激活態(tài)

eval "$(docker-machine env docker-node)"

這時再次查看創(chuàng)建的虛擬主機(jī),可以發(fā)現(xiàn)*已經(jīng)被切換為了命令中設(shè)置的虛擬機(jī)了

拉取一個遠(yuǎn)程鏡像(image),部署容器環(huán)境(container)

docker pull daocloud.io/library/node:0.10-onbuild

pull 后邊跟的是鏡像倉庫的地址,類似于從Git中的pull的用法

查看下載或自己構(gòu)建的鏡像

docker images

運(yùn)行容器

docker run -i -t --name shell daocloud.io/library/node:0.10-onbuild /bin/bash

命令有點(diǎn)長,參數(shù)也比較多,通過docker run --help查看到相關(guān)參數(shù)的解釋,該命令的大概意思就是運(yùn)行了一個bash,而且當(dāng)前bash屬于容器環(huán)境,非主機(jī)環(huán)境,可以在shell里執(zhí)行你想要執(zhí)行的任何命令,比如運(yùn)行程序啊什么的。這里我對容器環(huán)境做了一下檢查

ps:注意鏡像名稱后面一定要跟上tag,如果不寫上tag的話,系統(tǒng)會直接再創(chuàng)建一個鏡像



)

退出容器

ctrl+p ctrl+q
(此時其實(shí)后臺還在運(yùn)行)

查看容器運(yùn)行列表

docker ps -a

停止容器

docker stop bed5

stop后面跟container id 的前面幾位即可

刪除容器

docker rm bed5

刪除后通過docker ps -a便不能再看到對應(yīng)的container了

到此為止,docker的基本操作就差不多都演示完啦,本人也是docker的初學(xué)者,如果有什么不正確的地方還請多多擔(dān)待,也歡迎向本人指正

最近一直在工作,等時間多些了我會再更新一篇使用docker打包項目的博客,感興趣的可以關(guā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)容

  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,755評論 0 120
  • Docker — 云時代的程序分發(fā)方式 要說最近一年云計算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,850評論 15 147
  • 最近研究了幾天docker的快速部署,感覺很有新意,非常輕量級和方便,打算在公司推廣一下,解放運(yùn)維,省得每次部署一...
    Helen_Cat閱讀 1,572評論 0 4
  • 一、Docker 簡介 Docker 兩個主要部件:Docker: 開源的容器虛擬化平臺Docker Hub: 用...
    R_X閱讀 4,521評論 0 27
  • 衛(wèi)青一向不喜歡熏香,但他卻喜歡看輕煙自繁復(fù)華麗的博山爐中裊裊升起的樣子。眼下他正手腳熟練地用小箸撥開香灰,添進(jìn)細(xì)碎...
    94e4632b1894閱讀 6,224評論 0 1

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