今年2016 Docker Conf 發表後
引起大家狂熱的討論,整個會場都高潮了~XD
[引用一下相關的結論文章]
DockerCon 2016會議:發布內容的總結及主要收穫
原文網址:https://kknews.cc/tech/mmx4yp.html
Docker Swarm 已死!Docker Swarm 萬歲! 原文網址:https://kknews.cc/tech/8e2egq.html
官方無敵威的展示影片
看完影片後,安迪兒超期待新版Docker1.12的發表
等到了rc2,就迫不急待的試玩一下
因為安迪兒想把舊式的swarm換成新的docker swarm
就這樣一路從Docker1.12 rc2 rc3 rc4都玩了一遍
(因為不少問題和bug,所以才會一直試到rc4 …orz)
終於今天Docker v1.12.0正式定版
Docker大大們開發的能量超強大
每一版都更新很快,也修了一大堆東西~XD
https://github.com/docker/docker/releases
既然Docker v1.12定版了
安迪兒也馬上全新安裝
順便記錄一下和分享試用Docker 1.12的心得
[這次的docker增加不少新功能]
Swarm
安迪兒其實是為了這個功能
才會一直的在try
因為舊版的Swarm其實有點麻煩
要建置Consul Key Store daemon
要建overlay的網路
還要再自已寫一堆腳本去監控和偵測狀態和處理的方式
而新版的docker 1.12整合了Swarm
也有了新的swarm cluster使用和管理方式
大大的簡化了整個的流程
新的功能:
Docker Service、Stack、Cloud
整合stack與service的管理,可以使用deploy把stack部署到cloud上
Health check
https://github.com/docker/docker/pull/23218
可以自訂節點的健康
–health-cmd (health用的指令檔)
–health-interval (health的秒數)
然後用一般的docker inspect就可以查詢check的結果
docker inspect --format='' xxname healthy
Live restore
https://github.com/docker/docker/pull/23213
啟動時增加這個參數,daemon掛了也不會影響到container
–live-restore
overlay2
https://github.com/docker/docker/pull/22126
裡面有benchmark的數據可以參考一下
其它還有很多細的東西、指令、參數之類
有興趣的,可以多查查官方的說明
看了這些,應該手癢了吧
[實作時間到嘍!]
1. 安裝新版docker for 1.12
參考這頁的說明
https://github.com/docker/docker/releases
執行安裝指令
curl -fsSL https://experimental.docker.com/ | sh
sudo usermod -aG docker andy
2. 玩玩Container的叢集,建一個swarm來玩玩吧
首先在master機器上,建立管理的節點
docker swarm init --listen-addr docker112-swarm-admin:2377
再來,在其它台node機器上輸入
docker swarm join \
--token SWMTKN-1-55xrvnhhax0eqc0hi4iu6aihh8msqvlfjdgqetaqvlf8qm4n0z-7ekdghz9an5d4jpx4ibdaigtx \
10.240.0.3:2377
都加入叢集後,可以在主節點master那台,查一下所有的node
docker node ls
看看,超神奇的,就這樣一個跨機器的Container cluster就立完成了
這是不是docker的 黑魔法 吶~~~太可怕了,合併swarm後簡化許多繁雜的東西
3. 新增自已用的network
用docker network 建立一個自已的overlay來玩玩
建完並指定Container的overlay後,Container就能視為同網段,跨各種機器運行了
docker network create --driver overlay bowwow-net
4. 來見識一下讓大家瘋狂的Docker Service威力吧
建個postgresql database,直接replicas 2台
2台都是同樣的database
docker service create --replicas 2 -p 5432:5432 -p 8000:5432 --name=postgresql --network=bowwow-net --env="constraint:node==docker-swarm-node1" --mount type=volume,source=/home/app/metadb,target=/var/lib/postgresql -e POSTGRESQL_USER=postgres -e POSTGRESQL_PASS=1234 -e POSTGRESQL_DB=demodb bowwow/posttgresql9.4
docker service ls
可以看到postgresql啟動完成,2台分散在不同的機器上
直接來玩一下,2台機器的postgresql同時都能連上
隨便改一下其中一台,建一個新的table
過一會另一台就跟都同步了
而且因為用了bowwow-net的關係
開三台機器,三台機器都能互相找的到
也就是說,連上3台機器的ip,都能接上這個postgresql db
但這個postgresql db是分散成2個Container在跑
docker都幫你做了ha、scale和cluster了
只能說:超~神~的!!!
隨興的新增和刪除Container節點
docker service ps postgresql
docker service scale postgresql=3
docker service scale postgresql=1
docker service update --replicas 2 postgresql
新版docker有rolling update服務
–update-delay
他會慢慢的更版,不會一次都換掉
ex:
docker service create \
--replicas 3 \
--name redis \
--update-delay 10s \
redis:3.0.6
試一下Swarm Container Cluster移轉的功能
惡意關掉刪除其中一台的postgresql Container
果然夠優~馬上又自動的在別台機器上重啟了一個相同的服務
一次開10個來玩玩吧
不想要服務了,刪除它
docker service rm postgresql
docker service ls
新的Docker以上這些功能
跟本就是有k8s(Kubernetes)的影子
連相關指令名稱都有點相近
難怪大家整個看到傻眼,進化後的Docker太強大了。
5. 部署Docker Stack
大致上看起來
新的docker swarm像是用service就可以處理&管理相關的container服務
如果想用之前compose之類的一次啟動管理的方式呢??
安迪兒找了找,發現docker有一個deploy的相關功能
看了他文字上有說,要用dab來部署
忍不住好奇試了一下
真的是可以用
首先,先裝上最新版的docker-compose(1.8)
參考這頁
https://github.com/docker/compose/releases
curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
編寫一下docker-compose file
啟動它,成功後,可以再自行下指令bundle成dab檔
再使用docker deploy去部署
sudo docker-compose up -d
sudo docker-compose bundle -o elk.dab
docker deploy elk
看一下結果吧
呼…終於,東西實在太多了,安迪就也沒辦法一次說完試完
總之,這次的docker 1.12非常的強大
如果想要有較簡易的,除了k8s或mesos另外選擇的
也許考慮一下原生的docker看看嘍
應該不會失望的~~~XD
收工嘍~收工嘍!