作者:Bobby0322;

鏈接:http://www.jianshu.com/p/4e020803f0f0

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發佈到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。


Docker技術入門與實踐


DockerLogo

Docker是基於Go語言實現的雲開源項目,誕生於2013年初,最初發起者是dotCloud公司,其目標是“Build, Ship and Run Any App,Anywhere”,主要概念包括鏡像、容器、倉庫。Docker引擎的技術是Linux容器(Linux Containers, LXC)技術。容器有效地將由單個操作系統的資源劃分到孤立的組中,以便更好地在孤立的組之間平衡有衝突的資源使用需求。

Docker技術入門與實踐


Docker和傳統的虛擬機方式的不同之處

Docker 使用Go語言開發,並且運行在Linux系統下,而如果想用Windows運行,只能在Windows基礎上先運行一個Linux虛擬機,然後再在這個Linux虛擬機下運行Docker 。這麼看來,Docker 好像並沒有對Windows進行友好的優化和開發,但這是沒有辦法的,可能Docker 的內部算法、構造需要Linux系統的某些特性,而Windows是沒有的,這也是Windows系統的劣勢。那麼說好的是Windows下安裝Docker ,無論是多麼建議Linux下安裝都好,可能有的同學就是沒有Linux的主機,那就只能用Windows安裝了。

使用docker toolbox安裝docker

對於Windows用戶來說,使用docker toolbox來安裝docker是最簡單的方式

docker toolbox是一個工具集,它主要包含以下一些內容:

  • Docker CLI 客戶端,用來運行docker引擎創建鏡像和容器;
  • Docker Machine. 可以讓你在windows的命令行中運行docker引擎命令;
  • Docker Compose. 用來運行docker-compose命令;
  • Kitematic. 這是Docker的GUI版本;
  • Docker QuickStart shell. 這是一個已經配置好Docker的命令行環境;
  • Oracle VM Virtualbox. 虛擬機;

由於Docker引擎的守護進程使用的是Linux的內核,所以我們不能夠直接在windows中運行docker引擎。而是需要運行Docker Machine命令 docker-machine, 在你的機器上創建和獲得一個Linux虛擬機,用這個虛擬機纔可以在你的windows系統上運行Docker引擎

第一步:檢查你當前的windows系統是否符合要求:

爲了運行Docker,你的機器必須是windows7或以上版本的64bit系統。另外,你的機器必須支持硬件虛擬化技術(Hardware Virtualization Technology)並且已被啓用。對於windows10系統來說,你可以在 任務管理器->性能 中查看到你的電腦是否開啓了虛擬化。

第二步:安裝Docker Toolbox

Docker技術入門與實踐


DockerToolbox01.png


Docker技術入門與實踐


DockerToolbox02.png


Docker技術入門與實踐


DockerToolbox03.png

在這一步,你將安裝Docker Toolbox。安裝後你的系統將會安裝以下幾個軟件:

  • Windows版的Docker客戶端;
  • Docker Toolbox管理工具和ISO鏡像;
  • Oracle VM Virtualbox;
  • Git MSYS-git Unix 工具。

第三步. 確認是否安裝成功


Docker技術入門與實踐


DockerToolbox04.png

  1. 安裝完成後,你會在你的電腦桌面上看到新增了三個圖標;
  2. 雙擊Docker Quickstart Terminal圖標,啓動一個終端;


Docker技術入門與實踐


DockerToolbox05.png

第一次啓動的話你會看到命令行會輸出一些東西,等待一下,它會配置Docker Toolbox,之後,當它完成後,你會看到啓動成功的畫面;

這個終端是運行在bash環境下的,而不是標準的windows命令行,因爲Docker需要運行在bash環境下,否則一些命令無法運行

  1. 在命令行中輸入docker run hello-world並按回車鍵,如果docker配置成功的話,你會看到命令行中有如下輸出:


Docker技術入門與實踐


DockerToolbox07.png

可能出現的問題

若點擊Docker Quickstart Terminal圖標後,提示window正在查找bash.exe的話,
點擊瀏覽自己查找。一般在Git所安裝下的bin目錄。

D:\Program Files\Git\bin\bash.exe
打開後,若在bash界面提示沒有boot2docker鏡像,需要在github上下載
這是因爲沒有找到默認的boot2docker鏡像的原因,提示正在下載,然而github的下載速度不可恭維,第一反應都是找別的站資源下載。在此要注意了,不同的docker版本最好要對應相同的boot2docker版本,相信打開github下載頁的應該都留意到。最後我才發現,其實不用下載,在一開始安裝好的DockerToolbox根目錄下就有一個boot2docker,並且可以推斷就是對應的版本。把boot2docker.iso複製到,bash所提示找不到的那個目錄下(我這裏是C:\Users\Administrator.docker\machine\cache),再重新啓動即可。
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裏怎麼 開啓 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 ~


處理方案
  • 打開Oracle VM VirtualBox;
  • 刪除默認的虛擬機,如果在運行就停止後刪除;
  • 重啓Docker Quickstart Terminal,會重新生成一個虛擬機,啓動完成,問題應該解決了。

下一步:

自此,我們便在我們的windows下安裝好了docker環境了。

Docker 基礎


Docker技術入門與實踐


Docker與虛擬機比較

作爲一種輕量級的虛擬化方式,Docker在運行應用上跟傳統的虛擬機方式相比具有顯著優勢:

  • Docker容器很快,啓動和停止可以在秒級實現,這相比傳統的虛擬機方式要快得多。
  • Docker容器對系統資源需求很少,一臺主機上可以同時運行數千個Docker容器
  • Docker通過類似Git的操作來方便用戶獲取、分發和更新應用鏡像,指令簡明,學習成本較低。
  • Docker通過Dockerfile配置文件來支持靈活的自動化創建和部署機制,提高工作效率。


Docker技術入門與實踐


Docker與虛擬機比較

(本段摘自《Docker技術入門與實戰》)

虛擬機實現了硬件上的虛擬,而Docker則實現了操作系統級別的虛擬。

參考資料

  • 楊保華. Docker技術入門與實踐[M]. 北京:機械工業出版社, 2016.


就我個人而言,掌握一門技術併合理使用它的最好辦法就是深入理解這項技術背後的工作原理。通常情況 下,一項新技術的誕生常常會伴隨着媒體的大肆宣傳和炒作,這使得用戶很難看清技術的本質。更確切地說,新技術總是會發明一些新的術語或者隱喻詞來幫助宣 傳,這在初期是非常有幫助的,但是這給技術的原理蒙上了一層砂紙,不利於用戶在後期掌握技術的真諦。
相關文章