poynt2005's blog

一個我的個人文章發表的地方

0%

docker初學

Docker初學

這幾天也研究了一下Docker的用法,
虛擬化這東西我很有興趣,但可能知識量一點點皮毛都不到
這東西剛火起來的時候我沒去接觸,現在才開始接觸。。。

自己是看這篇教程,很詳細

↑這是網路上找到的比較圖

像Docker這種輕量的虛擬化技術,一般稱為Container
可以看到傳統的VM架構下,以Hypervisor運行的虛擬機,每個虛擬機都還有Guest OS,程序跑在Guest OS上
換成Container,沒有Guest OS了,直接就是跑在Docker Engine上

總之這東西也真的很牛,相比傳統的VM,這種hypervisor控制的虛擬機器,
佔用了os不少的資源、啟動速度慢,配置差點的host搞不好跑不動…等等的缺點,
Docker這種OS層的虛擬化,更能充分利用host的資源,啟動速度快,容器間也相互隔離互不影響
傳統VM,實在是浪費了不少額外的資源,況且傳統VM要安裝一個Guest OS,又會占用很多容量
而Docker的Image則是容量非常的小,了不起幾百MB吧。。。

只要鏡像建好,所需的運行環境都可以打包起來,
不管到哪個平台,只要有docker引擎就可以直接跑,
部屬的速度真的快,今天想換平台,直接pull下來就行,真D牛逼
目前寫的node.js程式 網站啥的,我都盡量用docker打包,
現在有些網站是建在heroku上,如果想換平台不用多久的功夫直接搬過去,
省下配置的麻煩了,沒什麼好說,就只能說docker牛逼
container這種技術不愧是未來虛擬化的趨勢,大家都在搞
下一代真的要靠它主宰了
真D後悔太晚接觸。。。
如果Docker學得差不多了應該就會來學docker swarm

Docker Toolbox

因為Docker目前只支持Linux OS,所以想在Windows上跑Docker只有使用VMㄌ,別無他法
官方有提供Docker for windows,阿不過這東西必須要用hyper-v,
之前被hyper-v雷過,所以不考慮
就使用官方提供的另一個Docker Toolbox
這東西呢,就是用甲骨文的Virtualbox安裝一個Linux OS來使用docker
使用的是tiny core linux,是精簡到不行、體積超小的Linux distribution
安裝Docker Toolbox也會自動安裝一些必要的軟體到電腦中,比如說git啥的
預設的VM安裝目錄會在%USERPROFILE%.docker這個資料夾
如果想要改預設資料夾的話,在環境變數裡面加一個DOCKER_CERT_PATH,並指向指定的目錄就行
安裝完toolbox之後,桌面上出現Docker quickstart terminal就可以安裝docker
不過我在這邊碰到坑了,安裝的時候顯示沒開啟CPU的虛擬化,草
安裝
我TM明明就啟用模擬,是在哈囉?

不過後來在stackovweflow找到解決方法,在Docker Toolbox安裝目錄下找到”start.sh”這個檔案
記事本打開,找到

1
${DOCKER_MACHINE}" create -d virtualbox $PROXY_ENV "${VM}

改成

1
${DOCKER_MACHINE}" create -d virtualbox --virtualbox-no-vtx-check $PROXY_ENV "${VM}

看起來是禁用vtx的檢測,
我想說我的電腦是AMD CPU阿,哪來的vtx阿,不會測試有沒有AMD-V喔。。。

然後最後圖案有跑出一隻鯨魚就OK了
這邊我還要特別提一點,
virtualbox裡面的VM建好之後

VM不要關機!!
VM不要關機!!
VM不要關機!!

很重要所以說三次
我關機之後,想重新使用CMD Docker指令再連回去VM,發現會一直卡在取得IP的狀態,
完全連不回去,使用

1
docker-machine default restart

一樣還是獲得不了IP,只能把virtualbox VM刪掉,再重新用Docker quickstart terminal新建VM
後來實測,如果真的要關機的話,一定要用save state,把當前環境儲存下來
開docker之前,先把state restore回去,這樣再windows操作docker就可以正常使用

總之,docker要學的東西還很多,加把勁吧