docker究竟是什麼 為什麼這麼流行 它的優點和缺陷有哪些?
Docker是什麼?
簡單得來說,Docker是一個由GO語言寫的程式運行的「容器」(Linux containers, LXCs); 目前雲端服務的基石是作業系統層級的隔離,在同一台實體伺服器上虛擬出多個主機。 Docker則實現了一種應用程式層級的隔離; 它改變我們基本的開發、操作單元,由直接操作虛擬主機(VM),轉換到操作程序運行的「容器」上來。
Docker是為開發者和系統管理員設計的,用來發布和運行分散式應用程式的一個開放性平台。由兩部分組成:
Docker Engine: 一個便攜式、輕量級的運作環境和套件管理器。 (註* 單OS vs 單線程,是不是跟NodeJS特別像?)
Docker Hub: 為建立自動化工作流程和分享應用程式所建立的雲端服務組成。 (註* 雲端映像/套件管理vs npm套件管理,是跟npm特別像?)
從2013年3月20日,第一個版本的Docker正式發佈到2014年6月 Docker 1.0 正式發布,經歷了15個月。 雖然發展歷程很短,但Docker正在有越來越流行的趨勢。
其實Container技術並非Docker的創新,HeroKu, NodeJitsu 等雲端服務商都採用了類似這種輕量級的虛擬化技術,但Docker是第一個將這種Container技術大規模開源並被社群廣泛接受的。
好的部分
Docker相對於VM虛擬機的優勢十分明顯,那就是輕量和高效能和便捷性, 以下部分: KVM and Docker LXC Benchmarking with OpenStack<〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜)效能可以獲得極大提升(經典的案例是提升97%)
管理操作(啟動,停止,開始,重啟等等) 都是以秒或毫秒為單位的。
敏捷
像虛擬機一樣敏捷,而且會更便宜,在bare metal(裸機)上佈署像點個按鈕一樣簡單。
靈活
將應用和系統“容器化”,不添加額外的操作系統,
輕量
你會擁有足夠的“操作系統”,僅需添加小鏡”,僅需添加小鏡即可。在一台伺服器上可以佈署100~1000個Containers容器。
便宜
開源的,免費的,低成本的。由現代Linux核心支援並驅動。註* 輕量的Container必定可以在一個實體機上開啟更多“容器”,注定比VMs便宜。
生態系統
正在越來越受歡迎,只需要看一看Google的趨勢就知道了, docker or LXC.
還有不計其數的社區和第三方應用。
雲端支援
不計其數的雲端服務提供建立和管理Linux容器框架。
有關Docker效能方面的優勢,還可參考此IBM工程師對效能提升的評測,從各方面比VMs(OS系統層級虛擬化)都有非常大的提升。
Performance Characteristics of VMs vs Docker Containers by Boden Russel (IBM)
Performance characteristics of traditional v ms vs docker containers〜㟜〜㟜〜,跳㟜〜,<〜〜㟜〜㟜,㟎㟜〜㟜,都會爭論? , 同樣Docker也有一些。
能否徹底隔離
在超複雜的業務系統中,單OS到底能不能實現徹底隔離,一個程式的崩潰/記憶體溢出/高CPU佔用到底會不會影響到其他容器或整個系統?許多人對Docker能否在實際的多主機的生產環境中支援關鍵任務系統還有懷疑。 註* 就像有人質疑Node.JS單線程快而不穩,無法在複雜場景中應用一樣。
不過可喜的是,目前Linux核心已經針對Container做了很多改進,以支援更好的隔離。
GO語言還沒有完全成熟
Docker由Go語言開發,但GO語言對大多數開發者來說比較陌生,而且還在不斷改進,距離成熟還有一段時間。此半git、半包管理的方式讓一些人產生不適。
被私有公司控制
Docker是一家叫Dotcloud的私有公司設計的,公司都是以營利為目的,比如你沒有辦法使用源代碼編制Docker項目,只能使用黑匣子編出的Docker進制包,未來可能不是完全免費的。 目前Docker已經推出以公司為導向的企業級服務(諮詢、支援和培訓)。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

退出 Docker 容器的四種方法:容器終端中使用 Ctrl D 快捷鍵容器終端中輸入 exit 命令宿主機終端中使用 docker stop <container_name> 命令宿主機終端中使用 docker kill <container_name> 命令(強制退出)

Docker 中將文件拷貝到外部主機的方法:使用 docker cp 命令:執行 docker cp [選項] <容器路徑> <主機路徑>。使用數據卷:在主機上創建目錄,在創建容器時使用 -v 參數掛載該目錄到容器內,實現文件雙向同步。

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

重啟 Docker 容器的方法:獲取容器 ID(docker ps);停止容器(docker stop <container_id>);啟動容器(docker start <container_id>);驗證重啟成功(docker ps)。其他方法:Docker Compose(docker-compose restart)或 Docker API(參考 Docker 文檔)。

在 Docker 中啟動 MySQL 的過程包含以下步驟:拉取 MySQL 鏡像創建並啟動容器,設置根用戶密碼並映射端口驗證連接創建數據庫和用戶授予對數據庫的所有權限

Docker 容器啟動步驟:拉取容器鏡像:運行 "docker pull [鏡像名稱]"。創建容器:使用 "docker create [選項] [鏡像名稱] [命令和參數]"。啟動容器:執行 "docker start [容器名稱或 ID]"。檢查容器狀態:通過 "docker ps" 驗證容器是否正在運行。

在 Docker 中創建容器: 1. 拉取鏡像: docker pull [鏡像名] 2. 創建容器: docker run [選項] [鏡像名] [命令] 3. 啟動容器: docker start [容器名]
