2015年6月26日 星期五

Docker Devenv Go gogrs #W26

後來想一想還是嘗試每個禮拜紀錄一下我這一週的狀況,要不然好像很多東西又一溜煙的過去了。

這一週的開始就有兩天的 Dockercon,今年開始 Docker 一整個風迷起來,也剛好最近比較有空,實際操作 Docker 才感覺到這東西非常神奇,以前建立一個虛擬環境其實也不是什麼大問題,問題在於啟動的速度超級快,因為就很簡單的在資源調用的時候透過 namespaces 來分配、隔離,如此這般就可以直接開啟一個或是數個 containers。

在 Dockercon 大概就是發布 runc.ioOCP(OPEN CONTAINER PROJECT)的建立,然後 OCP 把這一群公司(Apcera, AWS, Cisco, CoreOS, Docker, EMC, Fujitsu, Google, Goldman Sachs, HP, Huawei, IBM, Intel, Joyent, Pivotal, the Linux Foundation, Mesosphere, Microsoft, Rancher, Red Hat, VMWare)集合起來後推出一個標準的 container 格式 runC。網站的範例就是把 Docker 的 container export 出來後產出一個設定檔後直接用 runC 執行就可以了。

Dockercon 三個 Keynote 影片大部分都是簡單的火力展示,也有展示(05:35)如何在 Raspberry Pi 上面跑 100 個 container,後面還有一個(23:00)用 docker 快速開啟雷神之錘(Quake)的展示。

Docker 還有兩個還在開發的功能,Docker Machine、Docker Swarm,但這兩個東西都建構在 VirtualBox,而 VirtualBox 沒辦法在 AWS EC2 上面安裝,因為 EC2 本身是 Xen 的虛擬環境不支援,所以這兩個東西暫時先跳過。會需要這兩個是因為 Docker compose 有個 docker-compose scale 的指令,他可以像 Heroku 那樣快速新增數個 containers,但是目前卡在 IP 的配置的問題,這還要找些資料來研究看看。

另外這禮拜我自己在寫一些小工具的時候,發現我的開發環境有好一陣子沒更新了,我是想說有時候只是想要測試某個套件或是資料庫,在以前,我可能會到 AWS 開一台 Spot Insatances,但後來想想,用 Docker 建立一個環境就好了,用完就 docker rm 掉,想要用就 run 一個起來進去裝想要的東西,論速度就比開一個 Spot Instances 快!況且我在 AWS 上的機器其實還閒閒的很多資源 XD,所以在 github 上面開一個 toomore/devenv,裝好 vim、git、ctag、vim plugin、go ...,裝 vim 的部分因為有用到 lua 所以還參考一下 mbrt/golang-vim-devDockerfile 怎麼裝。

環境裝好後這禮拜開始動手寫一個 Go web application,主要還是要動手練習簡單建立一個網站的流程,我故意不用相關的 web framework,但真的就什麼都要重頭開始寫,就連基本的 login session 的機制都要自己寫,我是想到用 url.Values 來包一個簡單的驗證(godoc: toomore/hashvalues),最後再將這 hash 的資料放入 SetCookie 來當作 cookie-based session來用,這部份是參考 flaskgorilla/sessions 的作法來處理。不過這個 Go web application 要拿來做什麼用,應該再兩個禮拜後就可以看得出來 ......

關於前陣子一直在衝刺的 gogrs 這禮拜好像沒什麼新增,每天盯盤或是盤後分析目前都還堪用,但幾次交易下來還是有一些很想完成的功能,例如盤中的時候如果可以幫忙盯盤那就更完美了,有些股票在一些特定時段會有急漲或急跌的狀況,如果可以持續接資料(通常每 5 秒更新),就可以看到更細的競價過程,雖然有人和我說這目前看盤軟體都有相關的功能,但我就想用 Go 來完成啦 XD。現在的功能都還堪用,暫時先練習其他的部分。

這禮拜大概是這樣, 早上看盤、下午用電腦、晚上看資料 ......

2015年6月21日 星期日

Fast setup my development environment with Docker. toomore/devenv

其實我本來是要練習 go 的 database/sql,相對的就要安裝 database,但我想在一個乾淨的環境下安裝與練習,這時候才發現我平常就有在備份的 vimrc 很不自動,要建立一個開發環境還有很多地方都需要手動來操作,非常浪費時間,所以這幾天把 toomore/toomore.vim 重新整理,自動化安裝 go 的開發環境及一些常用的套件,然後再把 MariaDB、Redis 這些安裝寫成 scripts,在需要的時候選擇性的加入安裝。


接著是建立 Dockerfile 來 build image,把一些常用的(vim、git、tmux ...)安裝進去,順便調整 conf 與安裝 vim plugin。如果要測試 database 就進去後安裝,在啟動 docker 的時候可以搭配 --rm,這樣就可以做到用完及丟的效果。

docker -it --rm toomore/devenv

安心的測試完、乾淨的練習環境一次達成!

2015年6月9日 星期二

gogrs Docker


這幾天嘗試使用 Docker,稍微搞懂 docker 的指令,指令的部分沒有太大的問題,配合 Dockerfile 就可以一步一步慢慢堆疊安裝,最後封裝一個簡單的 image。

Docker Hub 有一個 Automated Build 的功能,可以從 Github、Bitbucket 指定一個 repo 來 build image,到目前為止我只能說 Docker 真的很神奇,Run 一個 container 超級快,資源的使用也相當節省。當然也建立一個 toomore/gogrs 的 image 在 Docker Hub。

前陣子有去參加 Docker-Taipei 的活動,其中 William Yeh 講了一個如何 build 一個極小化的 image,後面也有提到如何將 go app 轉成 static binaries,但是目前這部份還在練習,可以建立一個很小的 image,但是 Run 不起來 XD

接下來應該會來看看 Amazon ECS 有什麼特別的功能,要不然好像直接用 EC2 來串 container 好像也可以,然後調整一下 gogrs 一些操作來比較符合 container 的操作。

上週 PyConAPAC 還滿多公司都提到 Docker、Go 的,我想這還滿讓我欣慰的,其實還是有很多願意嘗試新技術的公司,也看起來很有彈性的操作,當然最後就是他們願意出來分享實作,光是最後一點就超級棒的!