Docker給PaaS世界帶來的“降維打擊”,其實是提供了一種非常便利的打包機制。該機制打包了應用運行所需要的整個操作系統,從而保證了本地環境和雲端環境的高度一致,避免了用戶通過“試錯”來匹配不同運行環境間差異的痛苦。
Docker概念簡述
集裝箱相當於容器,集裝箱≈主程序+依賴包;為了保證自己的程序不受系統等環境影響,發布的時候,只需要把自己的集裝箱從A船搬運到B船就可以了,這里的船可以理解成服務器。所以對運維來說,Docker是巨大的福音。因為,可以不用考慮各種不兼容,不用考慮安裝這個漏了那個,只要拿到一個生成集裝箱的模板,即鏡像。可以生成N多的服務了。

如果要用Docker來部署一個GitLab,怎么做呢?一段代碼的事,請看代碼!
sudo docker run --detach
--hostname 172.16.0.247
--publish 443:443 --publish 80:80 --publish 8888:22
--name gitlab
--restart always
--volume /srv/gitlab/config:/etc/gitlab
--volume /srv/gitlab/logs:/var/log/gitlab
--volume /srv/gitlab/data:/var/opt/gitlab
接下來訪問http://172.16.0.247,就可以看到效果了,請看圖示!

這段神奇的代碼都做了什么?
首先,他會到雲鏡像倉庫,類似AppleStore獲取GitLab鏡像模板,然后根據鏡像啟動一個GitLab容器。注意,容器的啟動和停止都是秒級的。不用於VMware等虛擬機,Docker底層和操作系統是共享資源,很輕量。傳統虛擬機是完全啟動一個獨立系統,特點就是笨、慢。Docker可以在一台服務器同時啟動上千個虛擬容器,VMware表示望塵莫及。
Docker和虛擬機對比
其實二則沒有可比性,但是經常拿過來對比,那就比吧,如下圖所示:

左圖的虛擬機,做OS上還有三個Guest OS,右邊的容器共享一個OS,知道底層的架構,那么二則的對比就一目了然,360環比如下:

Docker的強大你感受到了沒,這是冰上一角。
如果對Docker有更深的洞察,歡迎補充和討論,感謝您的捧場。
