如何使用 Gandi CLI 控制所有伺服器的 Docker

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 的威力吧!



發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *