1.1 快速上手
版本說明:本節範例基於 Docker v29.x 編寫。範例中使用的
nginx:alpine映象標籤為示範用途,請查閱 Docker Hub - nginx 確認最新可用版本。
開始前請先完成 第 3 章安裝 Docker,並確認 docker version 與 docker run hello-world 可以正常執行。若你只是先瀏覽流程,可以讀完本節後再回到安裝章實踐。
本節將透過一個簡單的 Web 應用例子,帶你快速體驗 Docker 的核心流程:建立映象、執行容器。
為什麼選擇 Nginx + HTML 作為入門例子?
在學習 Docker 之前,我們先來理解為什麼這個例子適合初學者。Docker 的核心價值在於一致性交付:在相同映象、CPU 架構、核心能力、設定和外部依賴都滿足的前提下,應用行為可以保持高度一致。這個 Nginx + 靜態 HTML 的例子之所以被廣泛採用,是因為它展現了 Docker 工作流的三個核心階段:
- 映象定義(Image Layer):透過 Dockerfile 描述如何把應用打包成一個自包含的單元
- 映象建立(Build):執行
docker build,Docker 根據 Dockerfile 逐層建立映象 - 容器執行(Runtime):透過
docker run啟動容器實例,應用真正開始提供服務
Nginx 是一個輕量級、使用廣泛的 Web 伺服器,學習完這個例子後,你可以輕鬆擴充套件到部署 Node.js、Python、Go 等任何語言的應用。
1.1.1 準備程式碼
建立一個名為 hello-docker 的資料夾,並在其中建立一個 index.html 檔案:
<h1>Hello, Docker!</h1>
1.1.2 編寫 Dockerfile
在同級目錄下建立一個名為 Dockerfile (無後綴) 的檔案:
FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html
1.1.3 建立映象
開啟終端,進入該目錄,執行建立指令:
$ docker build -t my-hello-world .
docker build:建立指令-t my-hello-world:給映象起個名字 (標籤).:指定上下文路徑為當前目錄
1.1.4 執行容器
使用剛才建立的映象啟動一個容器:
$ docker run -d -p 8080:80 my-hello-world
docker run:執行指令-d:後台執行-p 8080:80:將宿主機的 8080 連接埠對映到容器的 80 連接埠
1.1.5 訪問測試
開啟瀏覽器訪問 http://localhost:8080,你應該能看到 『Hello, Docker!』。
1.1.6 清理
停止並刪除容器:
# 檢視正在執行的容器 ID
$ docker ps
# 停止容器
$ docker stop <CONTAINER_ID>
# 刪除容器
$ docker rm <CONTAINER_ID>
恭喜!你已經完成了第一次 Docker 實戰。接下來請閱讀 Docker 核心概念做深入瞭解。