1、Docker 其實本身採用了 Linux Container 技術,讓你在無需安裝系統的情況下,直接針對不同的應用來做部署,亦即是說只針對應用本身進行虛擬化,而非傳統連作業系統也要虛擬化的方式;這樣做的話,便可讓你於一般的伺服器之中亦可流暢地安裝多個虛擬化應用。雖然我認為其實os也還是採用虛擬化,只是lightweight 到你感受不到它的存在罷了(從記憶體的觀點來說)。來自官網的示意圖很清楚的描述了這個概念 :
![]() |
| https://www.docker.com/whatisdocker/ |
2、有幾個比較大的特色:如
- 輕量級虛擬化:啟動容器(Container)的速度很快,每次重新啟動容器後,都是個乾淨的環境。(這個其實相對的也是個缺點,當你環境建好後,如果忘記把docker save起來,之前的設定,又得重來,rtc就是個例子,儘管你將rtc的container啟動了,但還是需要去設定一些參數的,但這些參數在你stop container之後就不見了~qq,又得重新設一次了)
- Docker file: 利用docker file可以建立多種應用系統的container環境建置,如本文的rtc
- Docker hub:運作機制就像 docker的app市集,可以很方便的取得一些常用的環境。
3、但個人認為有些不便的地方,如
- 非linux的os必需透過boot2docker (雖然windows 目前正在開發windows版的docker),像這篇所寫,我也實際build 出了一個windows的docker.exe ,但由於是BETA版本,還是有不少的BUG
- 透過boot2docker的話,實際上就是要用virtual box 這個VM來模擬LINUX的環境,所以也還是跑一個VM,整體佔用的資源(CPU/硬碟)也不是小
- 其他像HOST跟CONTAINER的資料同步,環境設置,說實在的也還算是在VM裡頭去設定應用
ok,接下來還是想辦法玩一下將我們的產品RTC(rational team concert)弄成docker container 吧
在過程中遇到了一些問題:
1、docker file 是做什麼的,搞清楚後,發現如果大家都把docker file都弄好了,讓我們download,應該才是這東西最棒的地方吧~ 至少這個rtc的docker file是有人寫好,我稍微改一下就行了。
2、過程中一直遇到 UbuntuI 認不得 java 這件事,搞了好久,才發現原來在64bit的ubuntu上,是沒法run 32bit的java的(這和windows不同呀,windows二種都能選擇的),後來加上這行 sudo apt-get install gcc-multilib 終於搞定啦
3 、再來是file sharing的問題,這點後來利用了這個svendowideit/samba docker container來處理host和boot2docker的問題,基本上就是將這個run起來就行了,windows 就能看到這個share出來的folder,進行資料交換(當然用scp也行啦,只是都docker了,就要docker個徹底)
$ docker run -v /data --name my-data busybox true $ docker run --rm -v /usr/local/bin/docker:/docker -v /var/run/docker.sock:/docker.sock svendowideit/samba my-data
4、另外在過程中,也嘗試建立了了常用的lamp,放一些基本的forum php網址也是ok的
$ docker pull dockerfiles/centos-lamp$ docker run -d -p 59001:80 dockerfiles/centos-lamp
5 、由於在windows的環境採用boot2docker,還是有些不方便的地方,例如說ip,看很多範例都說,把docker container run起來之後,打開http://localhost:port 就能看到系統其實是錯的,在boot2docker的應用之下,你得先看一下boot2docker這個vm的ip是多少,然後從你的host 打開browser http://boot2docker的ip:port/才行,這點也花了一些時間
6、最後還是寄望微軟能早日將這個docker for win cli 搞定,這樣以widnows為大宗執行環境的使用者,才能感受到docker的強大威力,不再需要boot2docker做中繼媒介了~~
7、在官方的tutorial中,有這麼一句 :you'll push your image to the Docker Hub Registry so that other developers can find and use it...,這應該是docker的business model吧,這個hub結合雲端的storage之後,應該可以開始以收費模式運行才是 (ps: 後來發現,想要建立 private image 是需要付費的,tutorial提供了打包自己的開發環境送到 Docker hub 上使用,但這個free的方案也只有提供 1 個 private而已)
7、在官方的tutorial中,有這麼一句 :you'll push your image to the Docker Hub Registry so that other developers can find and use it...,這應該是docker的business model吧,這個hub結合雲端的storage之後,應該可以開始以收費模式運行才是 (ps: 後來發現,想要建立 private image 是需要付費的,tutorial提供了打包自己的開發環境送到 Docker hub 上使用,但這個free的方案也只有提供 1 個 private而已)
玩過rtc的docker container之後,大概也理解到docker的一些精髓了,下一步應該是來研究一下有什麼好用的docker container 以及將這個rtc docker container 怎麼應用在ibm bluemix、aws elastic beanstalk及azure docker service之上吧~ 下次有機會再來分享在這三個cloud 平台之上的docker應用















































