2015年5月5日 星期二

Docker 映像系統 (dafu/mybase) 應用(一) - 固定 IP 與 OpenSSH 伺服器

dafu/mybase 映像系統, 已安裝好 OpenSSH 伺服器, 所以根據此映像系統建立的軟體貨櫃, 啟動時會一併啟動 OpenSSH 伺服器, 除了具有 OpenSSH 伺服器, 還可設定固定 IP, 請看以下操作說明 :

1. 建立 myip 軟體貨櫃
以下 docker run 命令中, "
--cap-add=NET_ADMIN" 這個參數主要是允許 myip 軟體貨櫃, 可以執行網路相關設定命令, 例如 : ifconfig eth0, route add,....
$ sudo docker run --cap-add=NET_ADMIN --name=myip -i -t dafu/mybase /bin/bash
706766fe1019: Pull complete
a62a42e77c9c: Pull complete
2c014f14d3d9: Pull complete
b7cf8f0d9e82: Pull complete
9ac03a835e1a: Pull complete
d43d2365fe0e: Already exists
Digest: sha256:345c00320b0be6f925b59da9781180b90852be1f53a80f618e93125d96cac272
Status: Downloaded newer image for dafu/mybase:latest
 * Starting OpenBSD Secure Shell server sshd                                 [ OK ]
2. 撰寫 /etc/mystart.sh 程序檔
dafu/mybase 映像系統的設計, 你可以撰寫 /etc/mystart.sh 程序檔, 來設定 myip 軟體貨櫃的網路系統, 例如 : IP 位址, Default Gateway,....
root@11481ac78ea5:/# nano /etc/mystart.sh
#!/bin/bash

ifconfig eth0 down
sleep 2
ifconfig eth0 172.17.0.22 netmask 255.255.0.0 up
route add default gw 172.17.42.1
echo "nameserver 168.95.1.1" > /etc/resolv.conf
3. 重新啟動 myip 軟體貨櫃 root@11481ac78ea5:/# exit
exit
$ sudo docker start myip
myip
$ sudo docker attach myip

4. 檢視 myip 軟體貨櫃的 IP 位址
root@11481ac78ea5:/# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 02:42:ac:11:00:04
          inet addr:172.17.0.22  Bcast:172.17.255.255  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe11:4/64 Scope:Link
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          RX packets:12 errors:0 dropped:2 overruns:0 frame:0
          TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1017 (1.0 KB)  TX bytes:1373 (1.3 KB)
5. 離開 myip 軟體貨櫃 按 Ctrl + p, Ctrl + q 鍵, 離開 myip 軟體貨櫃 6. 使用 ssh 命令, 登入 myip 軟體貨櫃 在 dafu/mybase 映像系統, 已建立 bigred 帳號, 密碼為 bigred $ ssh bigred@172.17.0.22
Warning: Permanently added '172.17.0.22' (ECDSA) to the list of known hosts.
bigred@172.17.0.22's password:
Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.16.0-34-generic x86_64)

 * Documentation:  https://help.ubuntu.com/
Last login: Fri Apr 24 06:59:54 2015 from 192.168.77.11
輸入 whoami 命令, 執行結果如下 : bigred@11481ac78ea5:~$ whoami
bigred
7. 中斷 ssh 連線 bigred@11481ac78ea5:~$ exit
logout
Connection to 172.17.0.22 closed.

2015年2月19日 星期四

第一屆 BigData 金象盃, 決賽 Hadoop 小刀鋒

第一屆 BigData 金象盃, 決賽 Hadoop 小刀鋒外觀, 外殼使用 3D 列印 (10 小時). Hadoop 小刀鋒內含 4 片樹莓機, USB * 4 介面, UART * 4 介面 及 4 個獨立樹莓機電源開關



 決賽 Hadoop 小刀鋒電源供應版, UART 介面板 及 USB 介面板(含電源)



第一屆 BigData 金象盃, 決賽 Hadoop 小刀鋒背板 (內建網路)







2015年2月3日 星期二

第一屆全國大專校院 Big Data 金象盃競賽 決賽名單

北區決賽正取名單(7名)
編號
學校/公司單位
指導老師
參賽者
全國排名
1
中原大學
劉立民
韓宇、楊冠軒、王思凱
第1名
2
來今有限公司

吳碧梅、李昆穎、黃昕瑀
第2名
3
中國科技大學
陳彼得
莊明城、楊承羲
第3名
4
友訊科技公司
和碩聯合科技公司
精英電腦公司

邱俊傑、李思賢、蔡志鑫
第4名
5
中國科技大學
陳彼得
許培利、張騰鴻

6
中國科技大學
陳彼得
徐嘉良、徐子淳

7
開平餐飲學校
李少峰
李少峰、李俊德

北區決賽備取名單(2名)
編號
學校/公司單位
指導老師
參賽者
1
中國科技大學
邱裕賓
鄭皓文、李姿妤
2
沁亞科技有限公司

陳彥璋、蔣秉修

南區決賽正取名單(3名)
編號
學校/公司單位
指導老師
參賽者
全國排名
1
高雄第一科技大學
鄭進興
翁嘉誠、林建興、曾譯生
第5名
2
樹德科技大學
胡舉軍
梁偉恩、鍾德憲

3
樹德科技大學
胡舉軍
李怡心、李韋震

南區決賽備取名單(1名)
編號
學校/公司單位
指導老師
參賽者
1
遠東科技大學
夏郭賢
白樹禮、張晴雯



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)