前情提要:
Docker與容器基礎介紹 (1), Docker與容器基礎介紹 (2)
今天來介紹Docker的相關知識!
昨天的文章中提到過Linux內建了一些機制,使資源可以被隔離、管控
最初IBM公司使用這些技術開發了一款叫做LXC的軟體,可說是最早的容器化工具
到了2013年,Docker被推出後,就引起廣大社群的注意,自此之後容器化技術就不斷地發展
Docker一開始也是基於LXC之上進行開發,不過後期就不依賴於它,而是發展了自己的一套libcontainer技術,而後又根據了OCI標準,變成了runC
Docker與LXC差在哪?
Docker除了LXC能做的事情外,又更強調了封裝、遷移、部署等概念,也就是說,當我們開發完一款應用後可以將整個運行環境封裝成映像檔(封閉貨櫃),實際要將應用上線成產品前,就將這些貨櫃運送到各個港口(想像成位於全球各地的一堆電腦),在貨櫃的上方,放置一個開放的空貨櫃,也就是容器,任何的暫時性修改都會存放於此,這也就是Docker的logo由來
下圖展示了Docker從開發到部署的流程
Image映像與Container容器間的差別?
Image可以想像成除了最上層以外的下層貨櫃,這部分是不會被修改到的,也就是Read-Only,Container就是最上層的貨櫃,修改會存放於此
一個image可以部署成多個容器,進行大量實例化或多樣化
提升Docker安全性?
我們提到過,Docker因為與宿主機共用核心的關係,所以安全性較差,如果要提升安全性,我個人是使用以下做法
在我的Hypervisor(ProxmoxVE)之上開一個Debian的VM,在這個VM中安裝Docker,這樣既可以享受Docker的便利性,也可以確保宿主機的安全,不過效能理所當然會被VM限制住囉~
以我個人使用的服務而言,如nextcloud, wireguard, rustdesk server...,這樣的效能是完全足夠的