Debian與Docker結合使用的完整流程及實踐指南
Docker是基于Debian系統的容器引擎,安裝需遵循以下標準化步驟:
sudo apt update && sudo apt upgrade -y
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker && sudo systemctl enable docker
sudo docker run hello-world
可選優化:
docker用戶組,避免每次使用sudo。sudo usermod -aG docker $USER && newgrp docker
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
通過Dockerfile定義應用運行環境,將應用及其依賴打包為可移植的鏡像,實現“一次構建,到處運行”。
mkdir debian-nginx && cd debian-nginx
② 新建Dockerfile,基于Debian鏡像安裝Nginx:FROM debian:bookworm-slim # 使用Debian最新穩定版輕量鏡像
WORKDIR /usr/src/app
RUN apt-get update && apt-get install -y --no-install-recommends nginx && rm -rf /var/lib/apt/lists/*
COPY nginx.conf /etc/nginx/nginx.conf # 復制自定義配置文件(可選)
EXPOSE 80 # 暴露80端口
CMD ["nginx", "-g", "daemon off;"] # 后臺運行Nginx
③ 構建鏡像(標簽為my-debian-nginx):docker build -t my-debian-nginx .
④ 運行容器(將主機8080端口映射到容器80端口):docker run -d -p 8080:80 --name my-nginx my-debian-nginx
⑤ 驗證部署:瀏覽器訪問http://<Debian主機IP>:8080,顯示Nginx默認歡迎頁面即成功。Docker鏡像作為應用的標準交付件,配合CI/CD工具(如GitHub Actions、GitLab CI)實現自動化構建、測試、部署。
通過Docker Compose定義多容器應用(如Web服務+數據庫+緩存),簡化微服務的部署與編排。
docker-compose.yml文件:version: '3.8'
services:
web:
build: . # 構建當前目錄下的Dockerfile(Flask應用)
ports:
- "5000:5000" # 映射Web服務端口
depends_on:
- db # 依賴PostgreSQL服務
environment:
- DATABASE_URL=postgresql://user:password@db:5432/mydb # 數據庫連接字符串
db:
image: postgres:15-alpine # 使用PostgreSQL輕量鏡像
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
- POSTGRES_DB=mydb
volumes:
- postgres_data:/var/lib/postgresql/data # 持久化數據庫數據
volumes:
postgres_data:
② 構建并啟動服務:docker-compose up -d
③ 驗證服務:訪問http://<Debian主機IP>:5000,若Flask應用能正常連接PostgreSQL數據庫,則部署成功。Docker容器提供輕量級資源隔離(CPU、內存、網絡、文件系統),同一主機可運行多個獨立容器(如同時運行Nginx、MySQL、Redis),避免環境沖突。
docker exec -it <容器ID> /bin/bash命令進入容器,調試應用環境問題。slim或buster-slim鏡像(如debian:bookworm-slim),減少鏡像體積,提升構建與啟動速度。docker pull拉取最新的基礎鏡像,重建應用鏡像并重啟容器,修補安全漏洞。docker run的--cpus(CPU配額)、--memory(內存上限)參數,限制容器資源使用,防止某個容器占用過多主機資源。