2014年12月31日 星期三

雲端 UberOS 資戰機 - Docker 發動機

雲端 UberOS 資戰機 的作業系統是 Ubuntu 14.04 LTS 64 位元, 如安裝 Ubuntu 14.04 已包好的 Docker 套件, 它的版本是 1.0.1, 這個版本在功能上並不完整, 所以本文的實作是從 Docker 官方套件網站, 直接安裝最新 Docker 版本. (以下操作不適用 Ubuntu 14.04 32 位元, 因 Docker 無法安裝在 Linux 32 位元系統中)

安裝 Docker

1. 更新 Ubuntu 14.04 最新套件清單及系統升級

$ sudo apt-get update
$ sudo apt-get upgrade

2. 開始安裝 docker
wget -qO- https://get.docker.com/ | sh

3. 將 bigred 加入 docker 群組
$ sudo usermod -aG docker bigred

4. 檢視 docker 版本 (2015/01/01)
$ docker  -v
Docker version 1.8.3, build f4bf5c7

5. 檢視 Docker Engine
Docker 套件安裝完成後, 會自動在系統中, 啟動 Docker Engine, 檢視命令如下 :

$ ps aux | grep 'docker \-d'
root      1407  0.0  0.3 331096 10468 ?     Ssl  12:38   0:00 /usr/bin/docker -d

Docker Engine 這個系統服務, 主要負責管理 Docker Container, 當 Docker Engine 啟動 Container時, Docker Engine 會幫 Docker Container 配置 Kernel Namespace, aufs 及 虛擬網卡 (連接 docker0 橋接器), 使得 Container 會被隔離在一個獨立運作空間運行.

6. 檢視 Docker 工作目錄
$ sudo tree -L 2 /var/lib/docker/
/var/lib/docker/
├── aufs
│   ├── diff
│   ├── layers
│   └── mnt
├── containers
│   ├── 068ff6c1108dfb5df70011c0a04d22be95ebe3f38afa8bdb5eae035e032e0443
│   ├── 0a8796835a872f88428ac5871712ec4eb63d2e6bfb3ccbd5bb74d21aef088ab7
│   ├── 10d3032101962265fc499ac0179a5ba001947526dcfabbf77db4fa8b3b0bf484
                                                                            ::
│   ├── e6f673326443820c1804ceaf50ae354a8e3be2b373c78587ab11cbf7435bf289
│   ├── ef7e1ef4d1d2d12e44389efc581884bb930088cf1c51a6d40903499e986bbe2a
│   └── f82b2aa8a958d3f82dea09409c79c0cc724a341639da4bdc08b161a36b256e1b
├── graph
│   ├── 51ab123e5709f69fc0ed7cce8f45f70bb65e212435f7b07f9f7a3a1f284e3a0f
│   ├── 76c3a176cb278cc608bc6448aba0ba3597ec5495ca2f874f420a38516623e249
│   ├── 932d5e9473735e05bee20bc03e3ee5f3d61b7ce7561c2f52aa508fe3504fd3c7
│   ├── 9edd2e42e620c1e9cc3ab477b60a1f7690b60b880febb89e5eb15f5b828adcf0
│   ├── a70d50cbb5ae2381bd09f882c63a97c016b8a12e70be056d6ad26af6870525d2
│   ├── b3584fc79604203ff792ee1a01de05877f5e2f2efcdf0bdff5bd74f0b8da123f
│   ├── b3c5954fa6e663cffffbda5f3215af11dce5c178d8e6dfd61a692d76dc1c718e
│   ├── b6af470ae058eabe8722937bff96b573e4a04262094a9b3239f3bab24910bdf6
│   ├── e8c52fd331562b90f36f494a6ddff50e6e1348034982c782c302a97aec31c37c
│   ├── f45152be9b63d713a6a42c92bcfa282fd6402ed9ba9fe41fb34c619efb580b9a
│   └── _tmp
├── linkgraph.db
├── repositories-aufs
├── tmp
│   └── GetImageBlob292711047
├── trust
└── volumes

認識 Docker 網路
Docker 套件安裝完成後, 它會自動建立一個名為 docker0 虛擬橋接器, 在 Ubuntu 系統中, 要檢視此 橋接器資訊, 你會需要安裝 bridge-utils 套件, 命令如下 :

$ sudo apt-get install bridge-utils

套件安裝完成後, 便可執行以下命令, 檢視 docker0 橋接器資訊

$ brctl show
bridge name bridge id           STP enabled interfaces
docker0 8000.56847afe9799   no

在橋接網路規劃上, 內定配置的 IP 範圍, 是一個 Private Class B (172.17.0.0/16) , 由以下命令可以得知 docker0 橋接器 內建網卡的 IP 位址.

$ ifconfig docker0
docker0   Link encap:Ethernet  HWaddr 56:84:7a:fe:97:99
          inet addr:172.17.42.1  Bcast:0.0.0.0  Mask:255.255.0.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

使用 Docker Container (貨櫃系統)

要啟動 Container 首先必須先取得它的系統母體, 這系統母體稱之為 Docker Image, 如用 Java 語言來比喻, Docker Image 相當於 Java 類別檔(設計藍圖), Container 相當於根據 Java 類別檔實作的物件

1. 下載 Docker 官方 Ubuntu 及 CentOS Base Image

$ sudo docker pull ubuntu
ubuntu:latest: The image you are pulling has been verified
511136ea3c5a: Pull complete
fe95bf7d5f50: Pull complete
9a4594fe74ea: Pull complete
8c4b1edcceea: Pull complete
ed5a78b7b42b: Pull complete
Status: Downloaded newer image for ubuntu:latest

$ sudo docker pull ubuntu:12.04
ubuntu:12.04: The image you are pulling has been verified

bc1f0427b833: Pull complete
0cf29d6c76b4: Pull complete
b560c37f1efa: Pull complete
69c02692b0c1: Pull complete
511136ea3c5a: Already exists

Status: Downloaded newer image for ubuntu:12.04

$ sudo docker pull centos
centos:latest: The image you are pulling has been verified
5b12ef8fd570: Pull complete
8efe422e6104: Pull complete
511136ea3c5a: Already exists

Status: Downloaded newer image for centos:latest

2. 檢視 Docker image 資訊
$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu              latest              5ba9dab47459        7 days ago          188.3 MB
ubuntu              12.04               69c02692b0c1        7 days ago          131.3 MB
centos              latest              8efe422e6104        4 weeks ago         210 MB

3. 根據 Ubuntu image 建立及啟動你的第一個 Container
$ sudo docker run -i -t ubuntu /bin/bash

4. 檢視 Container 的 IP 位址
root@7a4e583aaee1:/# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 02:42:c0:a8:00:03
inet addr:172.17.0.13 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::42:c0ff:fea8:3/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:578 (578.0 B)

5. 停止 Container 
root@7a4e583aaee1:/# exit
exit

6. 檢視已建立 Container
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a2b728b5eb3f ubuntu:latest "/bin/bash" 8 minutes ago Exited (0) 5 minutes ago mad_darwin

7. 移除 Container
$ sudo docker rm a2b
a2b

$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

管理 Docker Image

1. 建立 mysh Container
$ sudo docker run --name mysh -i -t dafu/busybox /bin/sh

2. 建立目錄, 離開 mysh Container
~ # mkdir test
~ # exit

3. 產生 ????/mysh Image
$ sudo docker commit mysh dafu/mysh
3457c66d9321f79442729769487a6f0351733af1b8aecda10b64fcfd6999e9c7

4. 登入 Docker HUB 網站
$ sudo docker login
Username: ????
Password:
Email: ?????????
WARNING: login credentials saved in /home/bigred/.docker/config.json
Login Succeeded

5. 上傳 自製 Docker Image
$ sudo docker push dafu/mysh
The push refers to a repository [docker.io/dafu/mysh] (len: 1)
3457c66d9321: Image successfully pushed
bdfd75a75b02: Image successfully pushed
latest: digest: sha256:2fe7fb641a885cf78b4225e6e8b56cf2fb04f7cd7b402e4c45198babc5061e05 size: 2416

6. 搜尋 Docker Image
$ sudo docker search dafu
NAME            DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
dafu/dkutil     Docker utilities for Hadoop Ecosystem           0
dafu/hadoop     Hadoop 生態系統套件                                   0
dafu/bigdata    Big Data ecosystem : Base System (Ubuntu 1...   0
dafu/mysql                                                      0
dafu/mysh                                                       0

2014年12月29日 星期一

Docker 維運工程師班

課程名稱 : Docker 維運工程師班 
課程日期 : 2015/03/3(星期二)~03/19(星期四), 

                   每週二 與 週四, 上課時間: 6:45pm~ 9:45pm
課程時數 : 18 小時
上課地點 : 育達科技大學 - 推廣教育中心
                    10553 台北市松山區南京東路四段120巷27號
課程費用 : 7200


課程介紹
解決問題的能力,一直是 IT 產業最重視的一環,也是大多數公司企業面臨技術問題時所仰賴的解決途徑,然而,等待,往往是依賴 IT 廠商提出解決方案時所需付出的,多數國際化的廠商,或大型雲端服務供應商(如 Google、Amazon、Facebook...等),在現實面上,不盡然有足夠的時間可以等待 IT 廠商的回應,這時,就必須自己解決遭遇的問題。而這種自行解決問題的過程,有時,就會激盪出令人意想不到的創意,這就是所謂的〝使用者驅動創新〞,如同 Google 的許多創新服務,或是大家熟悉的 3M,都是在解決問題的過程中,意外找到的創意!

而近年來,資訊界最引人注目的兩大議題,Big Data 與 Docker,牽動了未來業界發展的趨勢,其中,Big Data 改變了我們看待資料的態度,而 Docker 則是〝使用者驅動創新〞的最佳實例,而它們又帶給我們哪些不同的思維?

Big Data 的衝擊
以往資料處理的經驗,只需要在乎單一,或自家公司資料庫收集的(客戶)資料即可,但受惠於網路世代的發展,爆炸的資訊洪流,充斥在整個綿延無界的網路世界裡,面對如此巨量的資料,已經不是傳統資料庫,或單一伺服器所能承載的,更不用說要進行任何的分析與處理了!
分散式運算技術,是處理 Big Data 的絕佳利器!Big Data 大多是呈現非結構式的巨量資料,而 多點Hadoop 分散運算技術則是處理非結構式巨量資料的利器,利用 Hadoop 來將非結構式的資料進行前置處理與分析,將大量(型)非結構式資料拆解成許多小型的(結構)資料,然後再利用這些小型資料進行快速的分析與處理,並從中進行統計分析,以數據化的方式擷取所需的結果,精準的預測未來趨勢的走向!

Docker,大世代的虛擬貨櫃技術
分散式運算技術、叢集架構,就是由為數眾多的伺服器所架構而成的,但建置這些架構都要高額的硬體成本,倘若善用虛擬系統,就有機會能在現有硬體架構之下,建置出效能不匪的虛擬分散式運算的叢集架構,不過,虛擬系統的效能,卻是影響虛擬化架構成敗的關鍵因素。

Docker,大世代絕佳效能的虛擬系統!Docker 擺脫傳統虛擬系統需要虛擬化平台(Hypervisor) 的架構,利用 Linux 的 kernel Namespace  Control groups 核心技術 ,並搭配 aufs 的檔案系統,讓虛擬電腦(Container)可以達到趨近實體電腦的運作效能,以及具備系統分層及版本控管的機制,而 aufs 檔案系統,除了分層及版本控管的機制外,也完美實現了系統與資料(應用套件)區分的架構,兼顧了系統安全性與資料(應用套件)運用的彈性!

需要注意的是,Docker 發展早期確實是以 Linux Container (LXC) 為基礎,部分功能運作上也需要 Linux Container 的輔助(如網路組態),但從官方正式釋出的 1.0 版本開始,已經可以完全獨立運作,執行完整功能,而不再一定需要 Linux Container 的協助!
不同以往的結構,讓 Docker 顛覆了傳統虛擬系統的用法,以 Docker 來架構分散式的叢集運算平台,更能凸顯超高的運算速度,讓 Docker  Hadoop 成為資訊領域大世代的絕佳組合!

課程目標
培養學員具有建置與管理 Docker 雲端貨櫃系統 以及 實務應用能力其關鍵技術能力如下 :
1. Linux Kernel Namespace/Cgroup/aufs
2.多點 Hadoop分散運算系統的建置與管理
3. Java 應用網站開發

課程內容
本課程旨在建立 Docker 運作、佈署、應用的根基,讓參訓學員瞭解正確的應用觀念與實作方法,重點並不在講解程式設計的細節,而在於透過體驗式教學方式的實作,經由指令剪貼方式來體驗實際的 Docker 運作與功能,進而從體驗中驗證課程所學。

上課方式採用巢狀虛擬 (Nested VM) 實作教學環境每位學員可在各自的實體主機, 啟動虛擬碼頭主機, 自行安裝與管理 Docker 雲端貨櫃系統進而完全實做 Java 應用網站開發多點 Hadoop分散運算系統  企業專屬應用系統等如下圖 :


課程大綱
第一章 認識 Docker 雲端貨櫃技術
       1.1 Docker 運作原理
       1.2 Linux Kernel Namespace
       1.3 Linux Cgroup ​​​​​​​​​
       1.4 Linux Aufs 檔案系統

第二章 建置與管理 Docker 雲端貨櫃
       2.1 安裝 Docker 運作引擎
       2.2 取得官方 Docker 貨櫃映像檔 (image)
       2.3 產生與使用 Docker 貨櫃 (Container)
       2.4 
自造應用 Docker 
貨櫃映像檔 (image)
       2.5 
分享自造 Docker 
貨櫃映像檔 (image)

第三章 設定與管理 Docker 網路系統 
       3.1 
認識 Docker 原生網路架構
       3.2 管理 Linux 虛擬橋接器
       3.3 自造 Docker 網路系統

第四章 Docker 雲端貨櫃實務應用
       4.1 自造 Node.js 應用網站系統
       4.2 建置多點 Hadoop 分散運算系統
       4.3 外送 Java 網站應用系統


適合對象
- IT 專案經理、系統架構師  技術決策人員
網路管理工程師  應用程式設計師
欲親身體驗 Docker 運作平台

報名資格
具有Linux 桌面系統  "目錄 "檔案基本操作能力
  (建立刪除壓縮複製...)
具有 TCP/IP 網路基礎設定能力 (IP 位址遮罩, Default Gateway)

2014年12月28日 星期日

第一屆全國大專校院 BigData 金象盃

一、 Big Data,又稱為大數據、海量資料或巨量資料. 2012年開始,正式成為備受注目的資訊應用革命。因應 Big Data 之世界潮流,培養台灣 Hadoop 人才,使學校與產業界連結,本校與大葉大學及樹德科技大學, 共同辦理「第一屆全國大專校院 BIG DATA 金象盃競賽」。

二、 競賽行程:
()初賽時間:2015122()
()初賽地點:
北區-中國文化大學推廣部(台北市大安區建國南路二段231)
              中區-大葉大學(彰化縣大村鄉學府路168)
              南區-樹德科技大學(高雄市燕巢區橫山路59)
()決賽時間:201537()
()決賽地點:中國文化大學推廣部(台北市大安區建國南路二段231)

三、 報名辦法:
(競賽規則辦法,敬請詳閱競賽網站:http://www.sce.pccu.edu.tw/event/2014/20140918208/
(報名費用:每隊需繳交報名費新台幣1,500元。
(競賽報名截止日期:即日起至 2015 年 1月 16 日為止 (現在報名可立即擁有 "競賽訓練套件")
(主辦單位有保留對競賽方式、辦法及獎項修改之權利。

四、聯絡方式:
()北區及決賽主辦單位聯絡方式:
    聯絡人:王淑芬
    聯絡電話:02-27005858分機8562
    E-MAILsfwang@sce.pccu.edu.tw
()中南區主辦單位聯絡方式:
    聯絡人:業祐甫
    聯絡電話:04-25680117分機188