Debian如何利用Docker部署应用
导读:在 Debian 上使用 Docker 部署应用的完整流程 一 安装与验证 Docker 更新系统并安装依赖 sudo apt update && sudo apt install -y apt-transport-ht...
在 Debian 上使用 Docker 部署应用的完整流程
一 安装与验证 Docker
- 更新系统并安装依赖
- sudo apt update & & sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
- 添加 Docker 官方 GPG 密钥与 APT 源(推荐 Debian 12 的方式)
- sudo install -m 0755 -d /etc/apt/keyrings
- curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- echo “deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.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 docker-buildx-plugin docker-compose-plugin
- 启动并设置开机自启
- sudo systemctl start docker
- sudo systemctl enable docker
- 验证安装
- docker version
- docker info
- 可选:sudo docker run --rm hello-world 以上步骤适用于 Debian 12,并兼顾国内网络环境的可选镜像加速配置。
二 构建镜像与运行容器
- 示例一 Nginx 静态站点
- 在项目目录创建 Dockerfile
- FROM nginx:stable
- COPY ./html /usr/share/nginx/html
- EXPOSE 80
- 构建与运行
- docker build -t my-nginx .
- docker run -d --name web -p 80:80 my-nginx
- 在项目目录创建 Dockerfile
- 示例二 Python Flask 应用
- 目录结构
- app.py
- requirements.txt
- app.py
- from flask import Flask app = Flask(name) @app.route(“/”) def hello(): return “Hello, Docker on Debian!” if name == “main”: app.run(host=“0.0.0.0”, port=5000)
- requirements.txt
- flask
- Dockerfile
- FROM python:3.9-slim
- WORKDIR /app
- COPY requirements.txt .
- RUN pip install --no-cache-dir -r requirements.txt
- COPY . .
- EXPOSE 5000
- CMD [“python”, “app.py”]
- 构建与运行
- docker build -t flask-web-app .
- docker run -d --name flask -p 5000:5000 flask-web-app 以上示例覆盖了常见的 Nginx 与 Python 场景,镜像构建与端口映射为核心步骤。
- 目录结构
三 多容器应用与 Docker Compose
- 示例 docker-compose.yml(Flask + PostgreSQL)
- version: “3.8”
- services:
- web:
- build: .
- ports:
- “5000:5000”
- environment:
- POSTGRES_DB=appdb
- POSTGRES_USER=app
- POSTGRES_PASSWORD=secret
- depends_on:
- db
- db:
- image: postgres:15
- environment:
- POSTGRES_DB=appdb
- POSTGRES_USER=app
- POSTGRES_PASSWORD=secret
- volumes:
- pg-data:/var/lib/postgresql/data
- web:
- volumes:
- pg-data:
- 常用命令
- 启动:docker compose up -d(或 docker-compose up -d)
- 查看日志:docker compose logs -f
- 停止:docker compose down Compose 适合管理 多服务 应用的编排与生命周期。
四 网络发布与反向代理
- 直接端口映射
- 将容器端口映射到主机,例如 -p 80:80 或 -p 5000:5000,适用于简单场景与测试环境。
- Nginx 反向代理(生产常用)
- 安装 Nginx:sudo apt install -y nginx
- 站点配置 /etc/nginx/sites-available/app.conf
- server {
- listen 80;
- server_name app.example.com;
- location / {
- proxy_pass http://127.0.0.1:5000;
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
- }
- }
- server {
- 启用站点并热重载
- sudo ln -s /etc/nginx/sites-available/app.conf /etc/nginx/sites-enabled/
- sudo nginx -t & & sudo systemctl reload nginx
- 防火墙(如使用 ufw)
- sudo ufw allow 80,443/tcp Nginx 反向代理便于统一 TLS/证书、压缩、缓存 与 路由 管理。
五 运维与安全最佳实践
- 运行与维护
- 查看容器:docker ps -a
- 查看日志:docker logs -f < 容器名或ID>
- 进入容器:docker exec -it < 容器名或ID> bash
- 资源监控:docker stats
- 安全与配置
- 避免在生产开放 2375/2376 等远程 API 端口;如需远程管理,使用 TLS 严格鉴权。
- 使用非 root 用户运行容器进程(Dockerfile 中 USER 指令或 rootless 模式)。
- 日志与存储:在 /etc/docker/daemon.json 中配置日志轮转,例如
- {
- “log-driver”: “json-file”,
- “log-opts”: { “max-size”: “10m”, “max-file”: “3” }
- }
- {
- 镜像与系统更新:定期执行 apt update/upgrade 与 docker image prune,修补漏洞。
- 国内网络优化:可配置镜像加速器(registry-mirrors),编辑 /etc/docker/daemon.json 后重启 Docker。 以上做法有助于提升 稳定性、可观测性 与 安全性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian如何利用Docker部署应用
本文地址: https://pptw.com/jishu/755292.html
