2024年Stack Overflow開發者調查顯示,Docker以57%的采用率穩居開發工具前三。但仍有大量開發者把它和虛擬機混為一談——這個認知差每年吃掉團隊數百小時。
容器不是輕量版虛擬機。虛擬機要虛擬整套硬件,容器只打包應用需要的代碼、運行時和依賴。啟動時間從分鐘級壓到秒級,內存占用砍掉九成。Docker官網給出的數據:典型容器啟動時間小于1秒,而同等配置的虛擬機需要47秒。
這個差距在CI/CD流水線里會被放大幾百倍。
安裝驗證:別在第一步栽跟頭
Windows用戶有個隱蔽的坑。Docker Desktop的Windows模式依賴Hyper-V,和WSL 2的Linux子系統體驗差距明顯——文件系統性能差3-5倍,網絡棧也更繞。
推薦路徑:啟用WSL 2,在Ubuntu里跑Docker。驗證命令很簡單:
docker --version
docker compose version
兩條命令返回版本號才算通關。只裝Desktop不驗證CLI,后續教程跟下來會遍地報錯。
Linux用戶更省事。官方提供一鍵安裝腳本,但有個細節:裝完必須把當前用戶加入docker組,否則每條命令都要sudo。很多新手在這里反復摩擦,其實就一行:
sudo usermod -aG docker $USER && newgrp docker
四個核心概念:別急著敲命令
Image(鏡像)、Container(容器)、Registry(倉庫)、Dockerfile——這四個詞搞混了,后面全亂。
鏡像只讀,是容器的藍圖,類似編程里的類定義。容器是鏡像的運行實例,可以批量生成。Registry是鏡像的存儲服務,Docker Hub是默認的公共倉庫,企業通常自建私有Registry。Dockerfile是構建鏡像的文本配方,每一行指令對應一層文件系統變更。
關鍵記憶點:鏡像是死的,容器是活的;Registry是倉庫,Dockerfile是菜譜。
跑通第一個容器:
docker run hello-world
Docker會檢查本地有沒有這個鏡像,沒有就自動去Hub拉取。看到"Hello from Docker"說明引擎正常,容器隨即退出——這是設計行為,hello-world的使命就是驗證環境。
交互式容器:你的第一個Linux沙盒
加個參數就能進去操作:
docker run -it ubuntu bash
-it是-i(交互模式)和-t(分配偽終端)的合寫。現在你在一個隔離的Ubuntu環境里,可以隨意安裝軟件、改配置、搞破壞。exit退出后,容器停止運行,但文件系統變更默認保留。
想再啟動同一個容器?用docker start + 容器ID。想徹底刪掉?docker rm。容器和鏡像的關系,就像進程和可執行文件——一個能跑多個,關了還能再開。
這里藏著Docker的設計哲學:把環境做成可丟棄的。開發環境崩了?刪了重建,30秒恢復。傳統做法里,配壞一臺虛擬機可能要半天。
下一個問題:怎么把本地代碼塞進去,讓容器跑你的應用而不是別人的bash?
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.