起因:
有個朋友看我貼了篇docker swarm的文章,於是跟我討論了一些docker的用法.
覺得整個討論相當有意義,於是徵求同意後把文章記錄一下.
整個討論:
討論應用的情境
朋友: 你也有在玩docker嗎?
我: 當然…
朋友: 剛入門一週 在指點一下XD
朋友: 我目前只會裝跟build自己的image,打算把開發環境跟 production都換成docker.
我: dockerize your all service 是個蠻好的課題
朋友: 目前還不是很知道deploy怎麼做比較好,不過我看他還有一堆有的沒的功能 太底層我不太會.
我: deploy 就透過docker-compose 一個設定檔 db/web browser/service 都搞定. 至於Docker也不用看的太底層啦,你先搞懂基礎 docker,在看docker-compose 就已經出師了.
朋友: 所以我local 開發環境要deploy正式環境 用compose就可以,dockerfile有些指令我還看不太懂.
我: 喔… 你是要deploy dev-> prod
我: 沒關係.沒有人記得起來所有docker指令.docker console 大概是我覺得最討厭的指令集了.
朋友: 想要找個比較簡單的做法 我: 那你看看我剛剛貼的swarm 朋友: 每次裝aws環境 裝到我快吐了
解釋Docker Compose 跟 Swarm應用差異
朋友: 所以compose是幹嘛的,swarm我看很多人在講分散式系統,我的需求很簡單 就是想要dev -> 多台production.
我: 簡單的說
- docker-compose 可以一次呼叫一群的docker container 並且設定串接在一起.
- swarm 可以將全世界的container歸類在一起..你在local 就可以操控跨網路的container
朋友: 所以compose必須在同一台主機上
我: 對…基本上. 但是docker-compose可以跟swarm混用
朋友: 就是一台很強電腦跑很多台東西 恩,混用我可以理解.那我應該要去看swarm.
我: 一個docker-compose 例子.不過,你的方向是swarm.
然後我貼的那篇經驗談 好像就有提到 DEV->PRE PROD->PROD 的控制
拆解Services方法的討論
朋友: 所以你docker-compose在使用上有把 application / db / web server三個都要分三個container喔.自己dev環境也這樣搞嗎? 我: 能拆成這樣 到時候要換任何一個不用重啟container
朋友: 我是很懶 全部裝一起,production才會拆開.
我: 現在不拆之後拆就會出問題…那就失去docker的好處
朋友: 不過local如果分開 production會比較輕鬆一點
我: 而且重build 跟跑也快 才能節省時間啊.
朋友: 所以你這樣需要三個image嗎
我: 對,就docker microservice 概念 基本上一個service 就應該要是一個image.之後才方便抽換.
關於Mac上使用boot2docker VM可能造成的問題
朋友: 這樣硬碟就爆了XD
我: 你們不都是MBPR? 我128G,都沒講話 XD.
朋友: 我現在不知道為啥256g一直滿,打算把整台重灌. 然後全妝成docker,以後要砍環境比較快.
我: 我docker都用windows 桌機跑 VM,然後MAC連過去. 你硬碟會爆應該是xcode,可以看看我這篇文章.
記得經常去清一下 有是幾十G.
此外,MAC docker 跑VM 就算image 砍掉…空間一樣算喔 所以你又要看另外一個指令 docker-machine 把VM重啟 清理一下
朋友: 有這回事? 重開機會好嗎?
我: 不會好 要砍掉VM 就像是VirtualBox 空間只會一直上去啊
朋友:你現在部落格用哪套啊?最近打算重做一個自己網站
我:blog 用jekyll 架在github page
朋友:我現在mac上是用boot to docker
我:大家都是 所以你空間有可能都是VM吃掉. 這個人repo 把所有都用docker image chrome/sublime/spotify 超屌
關於Virtual Box 砍掉已經用空間的方式
朋友: 要怎麼砍掉vm啊?
我: docker-machine rm default 相關的看一下doc
記得砍掉docker-machine,要重啟跟重新設定port docker port 跟socket addr.可以看看這篇
朋友: 所以整個docker都是一個vm
我: 對
朋友:砍掉那裡面東西都不見了吧
我: 當然
朋友: 那這樣超麻煩勒
我: 所以你先透過VBOX 看一下 到底有多少空間被吃掉 因為VM 空間是變大後不會縮回來的 (除非你用vboxresie vbox resize.
朋友:哪個指令看size? docker-machine inspect
嗎?
我: 是.. 不然virtual box UI也可以看
朋友:virtual box UI 在哪啊 裝好就有嗎
我: 當初裝docker 都會裝一套 Virtual Box
討論結束
我:這一串Q&A蠻有意義的.. 等等整理一下 變成一篇 blog…. Today I learn (again)
朋友: 你每天都整理一堆啊? 超強
我:因為不整理會忘記..老了..整理起來 自己多懂一次.
心得
強者我朋友,不愧是強者.很能透過Q&A的方式來解答自己心中的疑問,也就是如何問對問題.又學了一課…