一、Docker是免費的嗎?
Docker免費是不用說的,它是開源的,也就是說,任何人都可以去Github上下載源代碼,並進行自己的開發和二次分發。Docker的商業計劃是基於Docker Enterprise版的訂閱服務,這個版本主要面向企業級客戶,提供了更多的支持和安全特性。
二、Docker是碼頭工人
Docker最初的設計目標是實現輕量級的容器化技術,提供一個類似於集裝箱一樣的解決方案,使得開發者可以輕鬆地將應用打包到容器中,然後在不同的環境中運行,而無需擔心環境問題和依賴關係。這就像是碼頭工人一樣,幫助開發者將貨物迅速裝上集裝箱,並將其放置到貨船上,然後在不同的目的地卸載貨物。
三、Dockershim.sock
Docker在容器化方案中,其中一個組成部分是運行時,而Dockershim是Kubernetes和Docker之間的適配器程序,用於在Kubernetes集群中管理和運行Pod中的Docker容器。在Kubernetes的架構圖中,Dockershim插件是一個Kubelet使用的容器運行時實現,它實現了Kubelet和Docker API之間的轉換。Dockershim程序在kubelet啟動時,會啟動一個名為Dockershim.sock的Socket文件,kubelet通過這個Socket與Docker引擎通信。
// 以下是Dockershim程序的核心代碼實現 func (ds *dockerShim) getDockerService(host, apiVersion, certPath string) (*dockerapi.Client, error) { var httpClient *http.Client if host == "unix:///var/run/docker.sock" || host == "npipe:////./pipe/docker_engine" { httpClient = &http.Client{ Transport: &http.Transport{ Dial: unixDial(host), }, } } else if certPath == "" { httpClient, _ = dockerapi.NewHTTPClientWithOpts(dockerapi.WithHost(host), dockerapi.WithVersion(apiVersion)) } else { httpClient, _ = dockerapi.NewHTTPClientWithOpts(dockerapi.WithHost(host), dockerapi.WithVersion(apiVersion), dockerapi.WithTLSClientConfig(certPath)) } return dockerapi.NewClientWithOpts(dockerapi.FromEnv, dockerapi.WithHTTPClient(httpClient)) }
四、Dockershim的優缺點
優點:
1、兼容性強,支持多種版本的Docker Engine;
2、架構簡單,易於實現;
3、使用方便,開發者不需要了解太多Kubernetes的技術細節;
4、在Docker Engine的開發生態圈中,擁有大量的成熟和穩定的工具鏈和生態系統。
缺點:
1、Dockershim作為一個適配器程序,會增加一定的複雜度和程序運行負擔;
2、Dockershim與Docker Engine的交互,容易出現兼容性問題;
3、由於官方不再維護Docker和Kubernetes集成的Dockershim,後續版本可能會出現不兼容的問題。
五、結語
Dockershim作為Kubernetes和Docker Engine之間的適配器程序,在容器化方案中發揮著重要作用。但是,隨著Kubernetes不斷發展和壯大,官方提供的Docker和Kubernetes集成的Dockershim已不再維護,後續版本不再支持使用。因此,在選擇容器運行時平台時,需要考慮不同的選項,並根據實際需求和使用場景做出選擇。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/180375.html