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(内存上限)参数,限制容器资源使用,防止某个容器占用过多主机资源。