你可能遇到這樣的場景:開發軟件時,需要像數據庫(mysql,mongodb)、消息系統(rabbitmq)、緩存服務(redis)等其它依賴服務。當然我們可以找台機器,一步步安裝依賴,然后把所有依賴的服務都安裝好,這就是一台測試機。
為了避免重復的勞動,vm層面的解決方案就是把這個測試機做成鏡像,以后申請的時候,就可以用之前測試機的鏡像作為模板,啟動一台虛擬機。這是一種解決方案,不過你可能需要更加靈活的解決方案,更加快速的啟動一個開發環境,更加自由的組合和擴展開發時候依賴的服務組件,那好,it comes to Docker。
Dock基於Docker實現了快速搭建開發環境,是一個更加靈活便利的可行性方案,可以短時間內啟動所有開發環境所需要的服務。
Dock Github:https://github.com/bripkens/dock
安裝步驟:
1.首先確保我們安裝了docker engine,然后接下來就是安裝dock,當然如果在mac系統上,也可以通過虛擬化的解決方案boot2docker來安裝docker,這樣整個開發環境就可以都在mac機器上。
2.代碼clone下來,然后執行以下命令以及初始化工作,可以把dock放到環境變量中
chmod +x /path/to/dock # Make dock executable
dock -u # Initialise dock
之后你就可以運行以下命令快速的啟動需要的組件了,dock這個項目比較簡單,很快就可以把代碼看完,因為就是在docker之上封裝了一層sh腳本,在formula里頭可以根據項目需求,自行添加服務組件
$ dock redis jenkins mongodb rabbitmq
這樣在開發機上就已經有如下服務了
root@docker-stable-ubuntu:~# docker ps CONTAINER ID IMAGE COMMAND PORTS NAMES 63142f5e4ad2 tutum/rabbitmq /run.sh 0.0.0.0:5672->5672/tcp, 0.0.0.0:15672->15672/tcp rabbitmq 29c3a381ba55 dockerfile/mongodb:latest mongod 28017/tcp, 0.0.0.0:27017->27017/tcp mongodb 0b356f508ed6 jenkins:latest /usr/local/bin/jenki 50000/tcp, 0.0.0.0:8472->8080/tcp jenkins 2cf88d0aea8f dockerfile/redis:latest redis-server /etc/re 0.0.0.0:6379->6379/tcp redis
接下來,開發者就可以根據ip+port等信息,使用剛剛所啟動的服務組件了
擴展:
也許我們可以提供這樣的服務
1.開發者需要一個redis實例,mongodb實例等等
2.我們可以做一個這樣的服務,搭建一個docker集群,然后寫一個網頁,接收用戶的請求,請求到后台docker集群運行起來一個實例,成功后返回ip+port+admin+password
3.開發者通過網頁就可以管理申請實例的生命周期
4.管理員在平台中方便的添加新的服務,只要package所需服務的docker image
加上服務發現和管理,這樣就是一個簡單私有雲的服務分發平台了