Docker 正夯!利用輕量級虛擬化技術,將應用程式打包,讓他與系統脫離黏著性,就像用一個盒子把程式裝起來,你隨時可以替換掉盒子,這就是 Docker 的魅力。如果你用 Docker 的方式安裝 MySQL 5.5,當你想要升級 5.6 的時候,就只要把舊的 Docker 停止,然後啟動新的 MySQL 5.6 Docker,並且 Migrate 資料,就是這麼簡單。
不過這個雲端時代,效能常常是一個關鍵,尤其在網路、行動應用軟體上,大家都習慣快快快!身為伺服器管理者,除了平常的系統效能調校,當面突然大量的使用者連線時,快速增加伺服器來處理需求是一個最簡單的方法之一。
現在雲端主機很多可以選擇,大家各有好壞,但是雲端主機都只會提供一個最基礎的環境,你所需要的軟體或程式庫都需要另外自行安裝,有經驗的工程師會將擴張伺服器的命令寫成一些 Shell Script 來協助他快速安裝所需要的軟體,在有 Docker 之後,我們更可以依靠 Docker 的便利將應用程式先把包成一個 Docker Image,在緊急的時候就可以利用 Docker 加快佈署的時間。
所以,通常你在租用雲端伺服器之後,會需要建立一些你需要的基本環境。如果!如果你的程式都已經 Docker 化,你可以利用 Gandi CLI 的功能快速將 Docker 佈署到 Gandi VPS 中。聽我遠遠道來~~~
Gandi CLI
Gandi CLI 是 Command-line Interface 的縮寫,也就是說你可以在 Linux 的命令列模式下控制 Gandi 的所有東西,包含 Domain、DNS records、SSL、PaaS(Simple Hosting)、IaaS(VPS),你可以新建/續用/修改/讀取/停止/刪除以上這些東西,詳情請參考 http://cli.gandi.net。安裝的方式很簡單,就是在你的 Linux 命令列打:
$ pip install gandi.cli
就安裝完成了,你需要有 API Key 才能使用 CLI ,請參考 這裡 ,然後輸入
$ gandi setup
就可以完成設定,這時候 CLI 就會綁到你的帳戶上面。
小提示:每一個 Linux User 可以綁不同的 API Key ,也就是說你可以用 root 綁帳號 A,用 user1 綁帳號 B,這樣可以分別控制不同的帳戶。
Gandi VPS
Gandi VPS 就是 Gandi 的雲端主機,你可以自己選擇所需要的規格,Gandi VPS 是依照點數扣款,平時則是購買點數,詳細說明可以參考 這裡。
用 CLI 佈署 Docker 到 VPS 上
接下來我們就簡單示範一下怎麼透過 CLI 來佈署 Docker 到 VPS 上面,其實很簡單,因為 CLI 都幫你作好了,你會發現你就只需要透過你的電腦就可以完成所有事情,我們假設你已經用 Docker 打包好你的應用程式,叫做 Hello-World,然後你已經放到 Docker Hub 上面,接下來:
透過 CLI 建立雲端主機
你可以先輸入 $gandi vm –help 來看看有哪些操作說明,以下建立雲端主機的指令
$ gandi vm create --hostname t1docker --login haway --password --sshkey ~/.ssh/id_rsa.pub --cores 4 --ip-version 4 --datacenter FR-SD3 --memory 4096 --image "Ubuntu 16.04 64 bits LTS (HVM)" --size 40G
上面的指令建立了一台主機,並且已經設定好下列資訊:
位置: FR-SD3 名稱: t1docker 作業系統: Ubuntu 16.04 CPU:4 Core 記憶體:4 GB 硬碟:40G 網路介面: IPv4 使用者: haway sshkey: ~/.ssh/id_rsa.pub
對了,你可以選擇這些映像檔,但是我發現如果用 Debian 之類的話,會連 wget 都沒有,所以可能要再登入自己奘 wget 之類的工具 :p。
CentOS 7 64 bits (HVM) Debian 7 64 bits (HVM) Debian 8 64 bits (HVM) FreeBSD 10.3 64 bits (UFS) FreeBSD 10.3 64 bits (ZFS) Ubuntu 14.04 64 bits LTS (HVM) Ubuntu 16.04 64 bits LTS (HVM)
然後你用 $ gandi vm info t1docker 就可以看到相關資訊
[15:07] ~:$> gandi vm info t1docker hostname : t1docker state : running cores : 4 memory : 4096 console : datacenter : FR-SD3 ---------- bandwidth : 102400.0 ip4 : 155.xxx.129.xxx ip6 : 2001:xxxx:1:x:216:xxxx:fef3:xxxx label : Ubuntu 16.04 64 bits LTS (HVM) kernel_version: grub name : sys_t1docker size : 10240
安裝 Docker
接下來透過 ssh 安裝 Docker,因為我們已經把 sshkey 放進去了,所以就登入不需要密碼。
$ ssh root@(server-ip) "wget -O - https://get.docker.io/ | sh"
安裝好之後就可以使用 Docker 啦!
執行你的 Docker 應用程式
先跑 Docker ps 看一下
[16:32] ~:$> gandi docker --vm t1docker ps Master running (pid=16684) using DOCKER_HOST=tcp://localhost:12042 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
把 Docker Image 拉下來
[15:05] ~:$> gandi docker --vm t1docker pull hello-world Master running (pid=16684) using DOCKER_HOST=tcp://localhost:12042 Using default tag: latest latest: Pulling from library/hello-world 78445dd45222: Pull complete Digest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7 Status: Downloaded newer image for hello-world:latest 執行 Docker
[15:05] ~:$> gandi docker --vm t1docker run hello-world Master running (pid=16684) using DOCKER_HOST=tcp://localhost:12042
跑 Apache Docker 的範例(帶 Docker 參數):
[15:05] ~:$> gandi docker --vm t1docker -- run -p 80:80 -d eboraas/apache
停止 Docker
[16:32] ~:$> gandi docker --vm t1docker stop d1f48aeba130 Master running (pid=16684) using DOCKER_HOST=tcp://localhost:12042 d1f48aeba130
在操作 Docker 的過程中完全不需要登入遠端主機,你只需要把 –vm 後面的主機換掉,就可以用本機的命令列控制所有雲端機器的 Docker 運行,是不是很酷呢!
ps. FR-SD3 目前是免費(不知道到什麼時候)的狀態,可以瘋狂開高規格機器不用錢,只要流量在 2TB/月 以內都是免錢的,趕快試試看 Gandi VPS 的威力吧!