在IBM Bluemix 建立客製化 Docker Container
作者 :陳兆麟
Email:[email protected]
在雲端服務環境下,容器(Container)技術的應用,越來越重要,現在開始有更多系統廠商推出企業級容器解決方案,IBM推出了企業級的容器雲端服務,稱爲IBM Containers,可協助用戶在混合雲的環境下,也能順利讓應用系統上線。這套新的服務,主要基於Docker的技術,以及IBM經營的平臺即服務Bluemix,而Bluemix本身應用了Cloud Foundry和OpenStack的軟件。有了IBM Containers,開發者可在Bluemix的環境當中,藉由Docker的技術來部署所要的容器,而不需要仰賴虛擬機器的部署與管理,你只要設定Docker引擎,或管理你自己的登錄即可。由於 Blumix 有 1 個月的免費使用期限 (免刷卡),對於想了解 Docker 的初學者比較有利,以下範例是在 Bluemix 建立及刪除 Dcoker Container 的實際操作 (stp by step)
作業環境:Win7 (64 bit),bluemix, Toolbox,docker
操作步驟:
1.從 GitHub 儲存庫下載 Cloud Foundry CLI 6.12.0 (cf-cli-installer_6.12.1_winx64.zip)(https://cli.run.pivotal.io/stable?release=windows64&version=6.12.1&source=github-rel) 解壓縮為 cf_installer.exe 並在 win7 命令列執行 cf_installer.exe
2. C:\>cf -v (驗證版本)
cf version 6.12.1-56792aa-2015-07-06T15:47:46+00:00
3.進入IBM Bluemix: https://console.ng.bluemix.net/ 註冊後登錄(30天試用期免費) 將 username 及 password 記錄
4.地區選擇 [美國南部]
5.建立空間,輸入空間名稱 test
6. 安裝 Docker Toolbox (https://www.docker.com/products/docker-toolbox)
7.桌面點選
$docker-machine ls (Docker Quickstart Terminal介面執行,確認虛擬機default 已安裝)
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default virtualbox Running tcp://192.168.99.101:2376 v1.10.3
$ docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="C:\Users\slim1\.docker\machine\machines\default"
export DOCKER_MACHINE_NAME="default"
eval $("C:\Program Files\Docker Toolbox\docker-machine.exe" env default)
$ eval $
("
C:\Program Files\Docker Toolbox\docker-machine.exe"
env default)
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default * virtualbox Running tcp://192.168.99.101:2376 v1.10.3
8. 取得 default虛擬機的 IP
$ docker-machine ip default
192.168.99.101
9.建立映像檔登錄名稱空間:點選新增專屬項目/c/Users/user/ictest
輸入:ruby (寫入後無法變更)
(一個組織對應一名稱空間)
10.Win7 不支援 cf ic login (for linux & Mac only) 所在 win7 系統以下指令無法使用
11.Win7 使用cf安裝 ibm-container plugin失敗,所以必須安裝reachlin/bluemix image
a. 事先在 /c/Users/user/ictest目錄編輯 Dockerfile 檔案:
FROM ubuntu:latest
RUN apt-get update
RUN apt-get -y install nodejs nodejs-legacy npm
b. 將 /c/Users/user/ictest 掛載在 bluemix container: /home/blue 之下
$ docker run --
name bluemix -d --
privileged -v /c/Users/user/ictest:/home/blue reachlin/bluemix
$ docker images
reachlin/bluemix latest 2eabb9b14f3f 7 weeks ago 259.8 MB
$ docker ps (驗證 bluemix container已啟動)
b0764cdcd78f reachlin/bluemix “dockerd-entrypoint.s” 45 minutes ago 2375/tcp bluemix
$ docker exec -it bluemix bash (進入bluemix container shell 交談)
root#ls /home/blue (/c/Users/user/ictest已掛載至 /home/blue )
(將掛載於 /home/blue/Dockerfile copy 至 /blue)
root#cp -r /home/blue /blue
root#cf login -u [email protected] -p xxxxxxxx -o \
"
[email protected]"
-s test -a api.ng.bluemix.net (指令同一行)
-u: isername (步驟 3)
-p: password (步驟 3)
-o: 組織 (步驟 4)
-s: 名稱空間 (步驟 5)
c. root#cf ic init
d. root#cf plugins (驗證 IBM-Containers 已安裝)
Plugin Name Version Command Name Command Help
IBM-Containers 0.8.788 ic IBM Containers plug-in
e. root#cf ic images (顯示在 Bluemix repository 內的 images)
registry.ng.bluemix.net/ibmnode v1.2 84efce0c747b 2 weeks ago 465.2 MB
12. 在 bluemix 建立 ictest container
root#cf login -a api.ng.bluemix.net
API endpoint: api.ng.bluemix.net
Email> [email protected] (步驟 3)
Password>xxxxxxxx
root#cf ic login
root#cf ic namespace get
ruby (名稱空間)
13.在 bluemix container 建立 ictest images
root#cd /blue
root#cf ic build -t registry.ng.bluemix.net/ruby/ictest .
root#cf ic images (驗證在 bluemix container所產生的 images)
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.ng.bluemix.net/ruby/ictest latest edbf549bcfaf 8 seconds ago 489.5 MB
驗證 ictest docker image 已產生
14.建立 container
root#cf ic run --
name ic1 -p 80:80 -p 443:443 -i -t registry.ng.bluemix.net/ruby/ictest
(回至 blumix 儀錶板,驗證 ic1 container 已產生)
15.停止 ic1 container
root#cf ic stop ic1
16.移除 ic1 container
root# cf ic rm ic1
17.移除 ictest 映像檔
root#cf ic rmi registry.ng.bluemix.net/ruby/ictest
附錄
1.win7 安裝Docker Toolbox:
http://knight-.iteye.com/blog/2254627
2.win7 安裝 Git
https://cli.run.pivotal.io/stable?release=windows64&version=6.12.1&source=github-rel
3 Docker 架構圖
參考文獻:
- http://ict.dst.ibm.com/files/CLD9404.pdf
- https://hub.docker.com/r/reachlin/bluemix/
- https://developer.ibm.com/answers/questions/190436/ice-login-error.html
- http://dockone.io/article/594
- http://www.vm.ibm.com/education/lvc/LVC0923.pdf
- https://www.youtube.com/watch?v=i7_dQQy40ZQ&feature=youtu.be
- http://www.ithome.com.tw/review/97383
- https://www.ibm.com/developerworks/cn/opensource/os-cn-docker/
- https://developer.ibm.com/answers/questions/201614/how-to-install-the-ice-cli-to-manage-containers-on.html
- https://console.ng.bluemix.net/docs/api/content/containers/images/getting_started_containers.svg