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

Docker是基于Go語(yǔ)言實(shí)現(xiàn)的云開(kāi)源項(xiàng)目,誕生于2013年初,最初發(fā)起者是dotCloud公司,其目標(biāo)是“Build, Ship and Run Any App, Anywhere”,主要概念包括鏡像、容器、倉(cāng)庫(kù)。Docker引擎的技術(shù)是Linux容器(Linux Containers, LXC)技術(shù)。容器有效地將由單個(gè)操作系統(tǒng)的資源劃分到孤立的組中,以便更好地在孤立的組之間平衡有沖突的資源使用需求。

Docker 使用Go語(yǔ)言開(kāi)發(fā),并且運(yùn)行在Linux系統(tǒng)下,而如果想用Windows運(yùn)行,只能在Windows基礎(chǔ)上先運(yùn)行一個(gè)Linux虛擬機(jī),然后再在這個(gè)Linux虛擬機(jī)下運(yùn)行Docker 。這么看來(lái),Docker 好像并沒(méi)有對(duì)Windows進(jìn)行友好的優(yōu)化和開(kāi)發(fā),但這是沒(méi)有辦法的,可能Docker 的內(nèi)部算法、構(gòu)造需要Linux系統(tǒng)的某些特性,而Windows是沒(méi)有的,這也是Windows系統(tǒng)的劣勢(shì)。那么說(shuō)好的是Windows下安裝Docker ,無(wú)論是多么建議Linux下安裝都好,可能有的同學(xué)就是沒(méi)有Linux的主機(jī),那就只能用Windows安裝了。
使用docker toolbox安裝docker
對(duì)于Windows用戶來(lái)說(shuō),使用docker toolbox來(lái)安裝docker是最簡(jiǎn)單的方式
docker toolbox是一個(gè)工具集,它主要包含以下一些內(nèi)容:
- Docker CLI 客戶端,用來(lái)運(yùn)行docker引擎創(chuàng)建鏡像和容器;
- Docker Machine. 可以讓你在windows的命令行中運(yùn)行docker引擎命令;
- Docker Compose. 用來(lái)運(yùn)行docker-compose命令;
- Kitematic. 這是Docker的GUI版本;
- Docker QuickStart shell. 這是一個(gè)已經(jīng)配置好Docker的命令行環(huán)境;
- Oracle VM Virtualbox. 虛擬機(jī);
由于Docker引擎的守護(hù)進(jìn)程使用的是Linux的內(nèi)核,所以我們不能夠直接在windows中運(yùn)行docker引擎。而是需要運(yùn)行Docker Machine命令 docker-machine, 在你的機(jī)器上創(chuàng)建和獲得一個(gè)Linux虛擬機(jī),用這個(gè)虛擬機(jī)才可以在你的windows系統(tǒng)上運(yùn)行Docker引擎。
第一步:檢查你當(dāng)前的windows系統(tǒng)是否符合要求:
為了運(yùn)行Docker,你的機(jī)器必須是windows7或以上版本的64bit系統(tǒng)。另外,你的機(jī)器必須支持硬件虛擬化技術(shù)(Hardware Virtualization Technology)并且已被啟用。對(duì)于windows10系統(tǒng)來(lái)說(shuō),你可以在 任務(wù)管理器->性能 中查看到你的電腦是否開(kāi)啟了虛擬化。
第二步:安裝Docker Toolbox



在這一步,你將安裝Docker Toolbox。安裝后你的系統(tǒng)將會(huì)安裝以下幾個(gè)軟件:
- Windows版的Docker客戶端;
- Docker Toolbox管理工具和ISO鏡像;
- Oracle VM Virtualbox;
- Git MSYS-git Unix 工具。
第三步. 確認(rèn)是否安裝成功

- 安裝完成后,你會(huì)在你的電腦桌面上看到新增了三個(gè)圖標(biāo);
- 雙擊Docker Quickstart Terminal圖標(biāo),啟動(dòng)一個(gè)終端;

第一次啟動(dòng)的話你會(huì)看到命令行會(huì)輸出一些東西,等待一下,它會(huì)配置Docker Toolbox,之后,當(dāng)它完成后,你會(huì)看到啟動(dòng)成功的畫(huà)面;
這個(gè)終端是運(yùn)行在bash環(huán)境下的,而不是標(biāo)準(zhǔn)的windows命令行,因?yàn)镈ocker需要運(yùn)行在bash環(huán)境下,否則一些命令無(wú)法運(yùn)行
- 在命令行中輸入docker run hello-world并按回車(chē)鍵,如果docker配置成功的話,你會(huì)看到命令行中有如下輸出:

可能出現(xiàn)的問(wèn)題
若點(diǎn)擊Docker Quickstart Terminal圖標(biāo)后,提示window正在查找bash.exe的話,
點(diǎn)擊瀏覽自己查找。一般在Git所安裝下的bin目錄。
D:\Program Files\Git\bin\bash.exe
打開(kāi)后,若在bash界面提示沒(méi)有boot2docker鏡像,需要在github上下載
這是因?yàn)闆](méi)有找到默認(rèn)的boot2docker鏡像的原因,提示正在下載,然而github的下載速度不可恭維,第一反應(yīng)都是找別的站資源下載。在此要注意了,不同的docker版本最好要對(duì)應(yīng)相同的boot2docker版本,相信打開(kāi)github下載頁(yè)的應(yīng)該都留意到。最后我才發(fā)現(xiàn),其實(shí)不用下載,在一開(kāi)始安裝好的DockerToolbox根目錄下就有一個(gè)boot2docker,并且可以推斷就是對(duì)應(yīng)的版本。
把boot2docker.iso復(fù)制到,bash所提示找不到的那個(gè)目錄下(我這里是C:\Users\Administrator.docker\machine\cache),再重新啟動(dòng)即可。
Running pre-create checks...
Creating machine...
(default) Copying C:\Users\Administrator\.docker\machine\cache\boot2docker.iso t
o C:\Users\Administrator\.docker\machine\machines\default\boot2docker.iso...
(default) Creating VirtualBox VM...
(default) Creating SSH key...
(default) Starting the VM...
(default) Check network to re-create if needed...
Error creating machine: Error in driver during machine creation: This computer d
oesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory
Looks like something went wrong in step ′Checking if machine default exists′...
Press any key to continue...
bios里怎么 開(kāi)啟 vt-x amd-v
Error getting IP address: ssh command error:
command : ip addr show
err : exit status 255
output :
docker is configured to use the default machine with IP
For help getting started, check out the docs at https://docs.docker.com
Start interactive shell
Administrator@USER-20151208SP MINGW64 ~
處理方案
- 打開(kāi)Oracle VM VirtualBox;
- 刪除默認(rèn)的虛擬機(jī),如果在運(yùn)行就停止后刪除;
- 重啟Docker Quickstart Terminal,會(huì)重新生成一個(gè)虛擬機(jī),啟動(dòng)完成,問(wèn)題應(yīng)該解決了。
下一步:
自此,我們便在我們的windows下安裝好了docker環(huán)境了。
Docker 基礎(chǔ)

Docker與虛擬機(jī)比較
作為一種輕量級(jí)的虛擬化方式,Docker在運(yùn)行應(yīng)用上跟傳統(tǒng)的虛擬機(jī)方式相比具有顯著優(yōu)勢(shì):
- Docker容器很快,啟動(dòng)和停止可以在秒級(jí)實(shí)現(xiàn),這相比傳統(tǒng)的虛擬機(jī)方式要快得多。
- Docker容器對(duì)系統(tǒng)資源需求很少,一臺(tái)主機(jī)上可以同時(shí)運(yùn)行數(shù)千個(gè)Docker容器。
- Docker通過(guò)類(lèi)似Git的操作來(lái)方便用戶獲取、分發(fā)和更新應(yīng)用鏡像,指令簡(jiǎn)明,學(xué)習(xí)成本較低。
- Docker通過(guò)Dockerfile配置文件來(lái)支持靈活的自動(dòng)化創(chuàng)建和部署機(jī)制,提高工作效率。

(本段摘自《Docker技術(shù)入門(mén)與實(shí)戰(zhàn)》)
虛擬機(jī)實(shí)現(xiàn)了硬件上的虛擬,而Docker則實(shí)現(xiàn)了操作系統(tǒng)級(jí)別的虛擬。
參考資料
- 楊保華. Docker技術(shù)入門(mén)與實(shí)踐[M]. 北京:機(jī)械工業(yè)出版社, 2016.
就我個(gè)人而言,掌握一門(mén)技術(shù)并合理使用它的最好辦法就是深入理解這項(xiàng)技術(shù)背后的工作原理。通常情況 下,一項(xiàng)新技術(shù)的誕生常常會(huì)伴隨著媒體的大肆宣傳和炒作,這使得用戶很難看清技術(shù)的本質(zhì)。更確切地說(shuō),新技術(shù)總是會(huì)發(fā)明一些新的術(shù)語(yǔ)或者隱喻詞來(lái)幫助宣 傳,這在初期是非常有幫助的,但是這給技術(shù)的原理蒙上了一層砂紙,不利于用戶在后期掌握技術(shù)的真諦。