Docker 是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。html
docker的英文本意是碼頭工人,也就是搬運工,這種搬運工搬運的是集裝箱(Container),集裝箱裏面裝的可不是商品貨物,而是任意類型的App,Docker把App(叫Payload)裝在Container內,經過Linux Container技術的包裝將App變成一種標準化的、可移植的、自管理的組件,這種組件能夠在你的latop上開發、調試、運行,最終很是方便和一致地運行在production環境下。[1]node
那Image和Container的區別是什麼?很簡單,他們的區別僅僅是一個是隻讀的層,一個是可寫的層,你可使用docker commit 命令,將你的Container變成一個Image,也就是提交你所運行的Container的修改內容,變成一個新的只讀的Image,這很是相似於git commit命令,感受真棒!linux
這二者到底什麼區別,咱們不細說,只上個總結:git
容器是軟件虛擬化,而虛擬機是硬件虛擬化docker
容器是利用操做系統(linux kernel)特性建立的一個 進程shell
容器是什麼
本質上來講,容器其實就是一個特殊的進程。相比於普通進程,這個進程(容器)之因此特殊,
是由於它有本身獨立的windows
UTS(Unix Time-sharing System):能夠擁有獨立的主機名和域名bash
PID:能夠擁有獨立的進程ID網絡
NET: 能夠擁有獨立的網絡設備工具
IPC:能夠擁有獨立的進程間通信
NS:能夠擁有獨立的文件系統(rootfs)
每一個方面都是一種namespace,若是一個進程擁有這些獨立的namespace,即可以跟其餘進程隔離開來,
那麼該進程看起來是否是就像一個獨立的主機呢?對,這就達到咱們的目的啦!
docker的安裝方式目前查到的有好幾種,好比經過boot2Docker命令行等,不過官方提供了Docker Toobox來大大方便了咱們在非linux系統輕鬆安裝上docker,本文也將使用docker官方提供的方式進行安裝
Docker Toolbox 提供瞭如下工具:
用於運行 docker-machine 二進制文件的 Docker Machine
用於運行 docker 二進行文件的 Docker Engine
用於運行 docker-compose 二進行文件的 Docker Compose (Mac 特有)
Kitematic,Docker 的圖形用戶界面
用於 Docker 命令行環且預先配置好的 shell
Oracle VM VirtualBox
因爲 Docker 的後臺程序使用了 Linux 特有的內核特性,因此您不能直接在 OS X 上運行 Docker。相反,您必須使用 docker-machine 來建立並附加一臺虛擬機(VM)。該虛擬機須要安裝 Linux 操做系統以便在您 Mac 機上運行 Docker。
下載Toolbox
T國內用戶很遺憾,官方地址被牆,經過官方地址下載toobox安裝無法完成,我找到了國內的源,網址貼上http://get.daocloud.io/#install-toolbox, 點擊進入下載操做系統對應的版本就行了
點擊下載文件進行安裝
跟着步驟一路點繼續就行了,走到最後一步,點擊左邊的圖標queck start,這時會開啓一個命令行,而後開始下載boot2docker.iso鏡像,下載完成後會建立一個default虛擬機,完成以後以下圖所示:
本人是在OS X中進行安裝的,其餘操做系統安裝請點擊這裏
其實已經建立好啦一個叫default
的docker machine(能夠想象爲一個虛擬機), 咱們能夠再手動建立一個便於後續比較理解
docker-machine creat --driver virtualbox docker-node
執行命令後,咱們便建立了一個由virtualbox驅動的名稱叫作docker-node
的docker-machine
docker-machine ls
這時能夠從看到剛纔建立的虛擬機和安裝docker時建立的default虛擬機,active爲*表示當前被激活的虛擬機,url表示訪問到虛擬機到獨立ip
docker-machine env docker-node
eval "$(docker-machine env docker-node)"
這時再次查看建立的虛擬主機,能夠發現*已經被切換爲了命令中設置的虛擬機了
docker pull daocloud.io/library/node:0.10-onbuild
pull
後邊跟的是鏡像倉庫的地址,相似於從Git中的pull的用法
docker images
docker run -i -t --name shell daocloud.io/library/node:0.10-onbuild /bin/bash
命令有點長,參數也比較多,經過docker run --help
查看到相關參數的解釋,該命令的大概意思就是運行了一個bash,並且當前bash屬於容器環境,非主機環境,能夠在shell裏執行你想要執行的任何命令,好比運行程序啊什麼的。這裏我對容器環境作了一下檢查
ps:注意鏡像名稱後面必定要跟上tag,若是不寫上tag的話,系統會直接再建立一個鏡像
)
ctrl+p ctrl+q
(此時其實後臺還在運行)
docker ps -a
docker stop bed5
stop
後面跟container id 的前面幾位便可
docker rm bed5
刪除後經過docker ps -a
便不能再看到對應的container了
到此爲止,docker的基本操做就差很少都演示完啦,本人也是docker的初學者,若是有什麼不正確的地方還請多多擔待,也歡迎向本人指正
最近一直在工做,等時間多些了我會再更新一篇使用docker打包項目的博客,感興趣的能夠關注一下本人,謝謝啦。