在現代軟體開發中,如何快速部署應用程式?
傳統方法需要在每台機器上手動安裝環境,這不僅繁瑣,還容易發生「本機可運行,伺服器卻不行」的問題。
Docker 解決了這個問題,它透過容器技術,讓應用程式及其相依環境可以一次封裝,隨時隨地運行,無論是在開發機、測試環境,還是雲端伺服器,都能確保一致性。
本篇文章將帶你 從零開始學習 Docker,包含 Docker 的概念、安裝、基本指令、建立容器與映像檔,讓你快速掌握這項熱門技術!?
1. 什麼是 Docker?
Docker 是一個 容器化(Containerization)技術,可以讓應用程式及其所有的相依環境封裝成一個獨立的單元,並能夠在不同的作業系統上執行,而不會受限於底層環境。
Docker 與傳統虛擬機的差異
| 傳統虛擬機(VM) | Docker 容器(Container) | |
|---|---|---|
| 啟動速度 | 幾分鐘 | 幾秒內 |
| 資源消耗 | 需要完整作業系統,佔用大量 CPU/RAM | 共享宿主機核心,輕量快速 |
| 環境一致性 | 每個 VM 需手動安裝環境 | 一次封裝,可在不同機器運行 |
| 適用場景 | 大型應用、需要完整 OS | 微服務、快速部署 |
? Docker 容器比虛擬機更輕量、啟動更快,適合開發、測試、部署!
2. 安裝 Docker
Windows / macOS
- 下載 Docker Desktop:https://www.docker.com/products/docker-desktop
- 安裝後啟動 Docker Desktop,並確保 Docker 服務正在運行
- 測試安裝是否成功:
docker --version
Linux(Ubuntu 安裝)
sudo apt update
sudo apt install docker.io -y
sudo systemctl start docker
sudo systemctl enable docker
測試是否安裝成功:
docker --version
3. Docker 基本指令
1. 下載映像檔
Docker 映像檔(Image)是預先建構好的應用環境,例如官方的 Nginx、MySQL、Node.js 等。
使用 docker pull 下載映像檔,例如下載最新版本的 Ubuntu:
docker pull ubuntu
2. 執行容器
docker run 指令用於建立並運行容器,例如執行一個 Ubuntu 容器:
docker run -it ubuntu
指令說明:
-it:讓容器以交互模式運行(可輸入指令)ubuntu:指定映像檔名稱
3. 查看運行中的容器
docker ps
若想查看所有容器(包含已停止):
docker ps -a
4. 停止與刪除容器
停止某個容器:
docker stop <CONTAINER_ID>
刪除某個容器:
docker rm <CONTAINER_ID>
一次刪除所有容器:
docker rm $(docker ps -aq)
5. 刪除映像檔
docker rmi <IMAGE_ID>
刪除所有未使用的映像檔:
docker image prune -a
4. 建立自己的 Docker 映像檔
如果你想將自己的應用程式打包成 Docker 映像檔,可以使用 Dockerfile 來定義環境。
1. 建立專案目錄
mkdir my-docker-app && cd my-docker-app
2. 建立 app.js(Node.js 應用)
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.send("Hello, Docker!");
});
app.listen(3000, () => console.log("Server running on port 3000"));
3. 建立 package.json
{
"name": "docker-app",
"version": "1.0.0",
"main": "app.js",
"dependencies": {
"express": "^4.17.1"
}
}
4. 建立 Dockerfile
# 使用官方 Node.js 映像檔
FROM node:16
# 設定工作目錄
WORKDIR /app
# 複製 package.json 並安裝相依套件
COPY package.json ./
RUN npm install
# 複製應用程式程式碼
COPY . .
# 指定執行的指令
CMD ["node", "app.js"]
# 暴露 3000 連接埠
EXPOSE 3000
5. 建立 Docker 映像檔
docker build -t my-node-app .
6. 執行容器
docker run -p 3000:3000 my-node-app
現在,你可以打開瀏覽器,訪問 http://localhost:3000,看到 Hello, Docker!!?
5. 使用 Docker Compose(多容器管理)
如果你的應用需要多個服務(如 Node.js + MySQL),可以使用 docker-compose.yml 來定義整個架構。
建立 docker-compose.yml
version: "3"
services:
web:
build: .
ports:
- "3000:3000"
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mydb
啟動所有容器
docker-compose up -d
這將會同時啟動 Node.js 伺服器與 MySQL!?
6. 常見 Docker 指令速查表
| 指令 | 說明 |
|---|---|
docker pull <image> |
下載映像檔 |
docker images |
查看本機映像檔 |
docker ps |
查看執行中的容器 |
docker ps -a |
查看所有容器 |
docker run -it <image> |
執行容器 |
docker stop <container> |
停止容器 |
docker rm <container> |
刪除容器 |
docker build -t <name> . |
建立映像檔 |
docker run -p 3000:3000 <image> |
執行容器並映射連接埠 |
docker-compose up -d |
啟動 docker-compose.yml 定義的所有服務 |
7. 結論
Docker 是現代開發不可或缺的工具,能夠讓應用程式封裝成可攜式的容器,方便部署與管理。
? 你學到了什麼?
✅ Docker 能夠封裝應用程式及其環境,確保一致性
✅ Dockerfile 可以自動化構建映像檔
✅ Docker Compose 可以管理多個容器
現在,就開始用 Docker 打造你的第一個專案吧!?
? 你有使用 Docker 嗎?遇到哪些挑戰?歡迎留言討論!?
評論