一、Docker基礎命令精講
Docker作為目前最流行的容器化技術,其命令體系是掌握容器技術的基石。常用命令包括:
鏡像管理:
- docker pull <image> 從倉庫拉取鏡像
- docker images 查看本地鏡像列表
- docker rmi <image> 刪除本地鏡像
容器操作:
- docker run [options] <image> 創建并啟動容器
- docker ps [-a] 查看運行中(或所有)容器
- docker start/stop/restart <container> 啟停容器
- docker exec -it <container> /bin/bash 進入容器終端
- docker rm <container> 刪除容器
二、Dockerfile編寫與實踐
Dockerfile是構建鏡像的藍圖,關鍵指令包括:
FROM指定基礎鏡像RUN執行命令COPY/ADD復制文件WORKDIR設置工作目錄EXPOSE聲明端口CMD/ENTRYPOINT容器啟動命令
示例Dockerfile:`dockerfile
FROM alpine:latest
RUN apk add --no-cache nginx
COPY nginx.conf /etc/nginx/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]`
三、生產環境部署策略
- 網絡配置:使用自定義網絡
docker network create實現容器隔離與通信 - 資源限制:通過
--memory、--cpus參數限制容器資源使用 - 健康檢查:在Dockerfile中添加
HEALTHCHECK指令 - 日志管理:配置日志驅動和輪轉策略
四、容器數據卷與數據持久化
數據卷類型:
1. 綁定掛載:-v /host/path:/container/path
2. 命名卷:-v volume_name:/container/path
3. 匿名卷:-v /container/path
最佳實踐:
- 關鍵數據必須使用數據卷持久化
- 配置文件推薦使用綁定掛載
- 數據庫數據使用命名卷管理
五、備份與遷移方案
鏡像備份:`bash
docker save -o backup.tar image:tag
docker load -i backup.tar`
數據卷備份:`bash
docker run --rm -v volume_name:/data -v $(pwd):/backup \
alpine tar czf /backup/backup.tar.gz /data`
完整遷移流程:
1. 導出鏡像和數據卷
2. 在新的Docker環境中導入
3. 使用相同配置啟動容器
六、服務編排與Docker Compose
通過docker-compose.yml定義多容器應用:`yaml
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
db:
image: mysql:8.0
environment:
MYSQLROOTPASSWORD: password
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:`
啟動服務:docker-compose up -d
七、私有倉庫搭建與管理
搭建私有Registry:`bash
docker run -d -p 5000:5000 --name registry \
-v /data/registry:/var/lib/registry registry:2`
鏡像推送與拉取:`bash
docker tag local-image localhost:5000/myimagedocker
push localhost:5000/myimage`
安全配置:
- 啟用TLS證書
- 配置HTTP基本認證
- 設置訪問控制策略
八、數據處理服務容器化實踐
數據庫容器化示例:`bash
docker run -d --name mysql \
-e MYSQLROOTPASSWORD=secret \
-v mysql_data:/var/lib/mysql \
-p 3306:3306 mysql:8.0`
數據處理流水線:
1. 數據采集容器:運行Python爬蟲或日志收集器
2. 處理容器:運行Spark或Pandas數據處理任務
3. 存儲容器:MySQL/PostgreSQL/Redis
4. 可視化容器:Grafana或自定義Web界面
批處理任務調度:
使用 docker run --rm 運行一次性處理任務,結合cron實現定時調度。
九、安全最佳實踐
- 最小化鏡像:使用Alpine基礎鏡像
- 非root運行:使用
USER指令 - 漏洞掃描:定期掃描鏡像安全漏洞
- 密鑰管理:使用Docker Secrets或外部密鑰管理服務
十、監控與運維
監控方案:
- Docker原生命令:docker stats
- cAdvisor + Prometheus + Grafana
- 商業方案:Datadog, New Relic
日志收集:
- ELK/EFK棧
- 使用Fluentd日志驅動
通過系統學習以上內容,您將能夠掌握Docker在生產環境中的全鏈路應用,從開發測試到部署運維,構建高效可靠的容器化服務體系。