起因:

有個朋友看我貼了篇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的方式來解答自己心中的疑問,也就是如何問對問題.又學了一課…

相關鏈結


Evan

Attitude is everything