引言
Docker 是一种轻量级容器化技术,通过标准化环境封装应用及其依赖,实现跨平台的高效部署。本指南将详细介绍 Docker 部署的全流程,涵盖基础环境搭建、容器配置、高级管理等核心内容。
环境准备
安装 Docker
Windows 系统
- 下载 Docker Desktop 安装包:Docker Desktop
- 运行安装程序,选择 “Install”
- 完成安装后,通过以下命令验证:
docker --version
Linux 系统(Ubuntu 为例)
sudo apt update
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
docker --version
Mac 系统
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
基础部署流程
镜像获取
# 拉取官方镜像
docker pull nginx:latest
# 拉取特定版本
docker pull mysql:8.0
容器运行
# 简单运行
docker run -d -p 80:80 --name webserver nginx
# 带数据卷
docker run -d \
-v /data/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=secret \
--name mysql-server \
mysql:8.0
容器管理
命令 | 说明 |
---|---|
docker ps |
查看运行中的容器 |
docker stop [容器ID] |
停止容器 |
docker start [容器ID] |
启动容器 |
docker logs [容器ID] |
查看容器日志 |
docker exec -it [容器ID] bash |
进入容器终端 |
高级配置
Docker Compose 部署
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
db:
image: mysql:8.0
environment:
- MYSQL_ROOT_PASSWORD=secret
volumes:
- ./mysql_data:/var/lib/mysql
网络配置
# 创建自定义网络
docker network create my-network
# 容器加入网络
docker run -d --network my-network --name web1 nginx
安全加固
# 限制容器资源
docker run -d \
--memory=512m \
--cpus=1 \
--name app-container \
myapp:latest
# 使用只读文件系统
docker run -d --read-only --name secure-app myapp:latest
生产环境优化
监控与日志
# 安装Prometheus监控
docker run -d \
-p 9090:9090 \
--name prometheus \
prom/prometheus
# 配置日志驱动
docker run -d \
--log-driver=json-file \
--log-opt max-size=10m \
--name app \
myapp:latest
常见问题处理
镜像拉取失败
# 更换国内镜像源
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
sudo systemctl restart docker
容器无法启动
# 查看详细日志
docker logs -f --tail=50 [容器ID]
# 检查资源限制
docker stats [容器ID]
数据卷权限问题
# 修改挂载目录权限
sudo chown -R 1000:1000 /data/mysql
参考资源
本指南提供了从基础到高级的 Docker 部署方案,适用于开发测试到生产环境的全生命周期管理。如需进一步了解特定场景的部署优化策略,可随时补充说明具体需求。