Debian进程容器化部署如何操作
小樊
39
2025-11-15 00:53:21
Debian 进程容器化部署实操指南
一 准备与安装
- 更新索引并安装依赖
- sudo apt update
- sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
- 添加 Docker 官方 GPG 与 APT 源(Debian 12/Bookworm 示例)
- 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 > /dev/null
- 安装并启动 Docker
- sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
- sudo systemctl enable --now docker
- 验证安装
- sudo docker run --rm hello-world
- 可选:将当前用户加入 docker 组以避免每次使用 sudo
- sudo usermod -aG docker $USER(需重新登录生效)
二 构建镜像
- 通用 Dockerfile 模板(以 Nginx 为例,可直接复用)
- FROM debian:stable-slim
- ENV DEBIAN_FRONTEND=noninteractive
- 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
- CMD [“nginx”, “-g”, “daemon off;”]
- 构建镜像
- docker build -t my-debian-nginx:1.0 .
- 说明
- 选择 debian:stable-slim 可显著减小镜像体积;将进程以前台方式运行(如 Nginx 的 daemon off)是容器最佳实践。
三 运行与验证
- 启动容器(后台运行并映射端口)
- docker run -d --name my-nginx -p 80:80 my-debian-nginx:1.0
- 常用管理
- 查看:docker ps -a
- 停止/启动/删除:docker stop|start|rm my-nginx
- 快速验证
- curl http://127.0.0.1 或浏览器访问服务器 IP 的 80 端口,应看到 Nginx 欢迎页。
四 多容器与编排
- 使用 Docker Compose 管理多服务(示例含应用与数据库)
- version: “3.8”
services:
web:
build: .
ports:
- “8080:8080”
environment:
- DATABASE_URL=postgres://user:pass@db:5432/app
depends_on:
- db
db:
image: postgres:15
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
POSTGRES_DB: app
volumes:
- pg-data:/var/lib/postgresql/data
volumes:
pg-data:
- 启动与查看日志
- docker compose up -d
- docker compose logs -f web
- 适用场景
- 当存在 Web/应用 + 数据库/缓存/消息队列 等多进程协作时,使用 Compose 或 Kubernetes 能显著简化部署与运维。
五 生产要点与排错
- 安全与最小权限
- 容器内以 非 root 用户运行(Dockerfile 中创建用户并切换);仅暴露必要端口;敏感信息使用 环境变量/Secret 管理,避免硬编码。
- 数据与持久化
- 有状态服务使用 Docker 卷 或外部存储(如数据库数据卷、日志目录挂载),避免容器重建导致数据丢失。
- 日志与监控
- 应用日志输出到 stdout/stderr,通过 docker logs 或集中式日志系统收集;必要时增加健康检查与重启策略。
- 镜像与网络
- 选择稳定基础镜像标签(如 debian:stable-slim),合理复用层减少体积;多容器通过自定义网络进行隔离与通信。
- 常见问题速查
- 端口未通:确认容器端口映射(-p 主机端口:容器端口)与云安全组/防火墙放行。
- 权限不足:将用户加入 docker 组或检查容器内运行用户与文件权限。
- 镜像拉取慢:配置国内镜像加速器或企业私有仓库,提高拉取速度与稳定性。