1. Docker环境快速搭建指南
在Linux系统上部署Docker环境是现代化应用部署的基础步骤。作为容器化技术的核心平台,Docker能够实现应用与环境的隔离打包,大幅提升部署效率和可移植性。下面我将分享在主流Linux发行版上快速安装Docker的完整流程。
1.1 系统环境准备
首先需要确认系统是否满足Docker运行的基本要求:
- 64位Linux内核版本3.10及以上
- 已启用cgroups和命名空间支持
- 推荐使用Ubuntu 20.04+/CentOS 7+等主流发行版
可以通过以下命令检查内核版本:
bash复制uname -r
1.2 安装方法选择
根据不同的Linux发行版,Docker提供了多种安装方式:
- 官方脚本安装(推荐新手):
bash复制curl -fsSL https://get.docker.com | sh
- 软件包管理器安装:
- Ubuntu/Debian:
bash复制sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
- CentOS/RHEL:
bash复制sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
- 二进制包手动安装:
适合需要自定义安装路径或特殊配置的场景
1.3 安装后配置
安装完成后需要进行基础配置:
bash复制# 启动Docker服务
sudo systemctl start docker
# 设置开机自启
sudo systemctl enable docker
# 将当前用户加入docker组(避免每次使用sudo)
sudo usermod -aG docker $USER
newgrp docker
验证安装是否成功:
bash复制docker --version
docker run hello-world
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Nginx容器化部署实战
2.1 获取Nginx镜像
Docker Hub提供了官方Nginx镜像,支持多种版本和变体:
bash复制# 拉取最新稳定版
docker pull nginx:stable
# 查看已下载镜像
docker images
2.2 运行Nginx容器
基础运行命令:
bash复制docker run --name my-nginx -d -p 80:80 nginx:stable
参数说明:
--name:指定容器名称-d:后台运行-p:端口映射(主机端口:容器端口)
2.3 验证服务运行
检查容器状态:
bash复制docker ps
访问测试:
bash复制curl http://localhost
或在浏览器中访问服务器IP地址
3. 生产环境配置优化
3.1 持久化配置与数据
默认情况下,Nginx容器内的配置和数据都是临时的。要实现持久化存储:
- 创建本地目录结构:
bash复制mkdir -p ~/nginx/{conf,html,logs}
- 复制默认配置:
bash复制docker cp my-nginx:/etc/nginx/nginx.conf ~/nginx/conf/
docker cp my-nginx:/usr/share/nginx/html ~/nginx/
- 使用数据卷重新运行:
bash复制docker run -d --name prod-nginx \
-p 80:80 \
-v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v ~/nginx/html:/usr/share/nginx/html \
-v ~/nginx/logs:/var/log/nginx \
nginx:stable
3.2 性能调优参数
根据服务器资源情况调整容器资源限制:
bash复制docker run -d --name tuned-nginx \
--cpus 2 \
--memory 1g \
--memory-swap 1.5g \
-p 80:80 \
nginx:stable
4. 常见问题排查
4.1 端口冲突问题
错误现象:
code复制docker: Error response from daemon: driver failed programming external connectivity...
解决方案:
- 检查端口占用:
bash复制ss -tulnp | grep :80
- 停止占用进程或改用其他端口
4.2 权限问题
错误现象:
code复制Got permission denied while trying to connect to the Docker daemon socket...
解决方案:
- 确保当前用户在docker组中
- 或使用sudo执行命令
4.3 镜像拉取失败
错误现象:
code复制Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled...
解决方案:
- 配置国内镜像加速器
bash复制sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://<your-mirror>.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
5. 进阶部署方案
5.1 使用Docker Compose编排
创建docker-compose.yml文件:
yaml复制version: '3'
services:
web:
image: nginx:stable
ports:
- "80:80"
volumes:
- ./nginx/conf:/etc/nginx
- ./nginx/html:/usr/share/nginx/html
restart: always
启动服务:
bash复制docker-compose up -d
5.2 多容器负载均衡
使用Nginx作为反向代理,配合多个应用容器:
yaml复制version: '3'
services:
nginx:
image: nginx:stable
ports:
- "80:80"
volumes:
- ./nginx/conf:/etc/nginx
depends_on:
- app1
- app2
app1:
image: your-app-image
expose:
- "8080"
app2:
image: your-app-image
expose:
- "8080"
配置nginx.conf中的upstream模块:
nginx复制upstream app_servers {
server app1:8080;
server app2:8080;
}
server {
location / {
proxy_pass http://app_servers;
}
}
6. 安全最佳实践
6.1 最小权限原则
- 避免使用root用户运行容器:
bash复制docker run -d --user 1000:1000 nginx:stable
- 限制容器能力:
bash复制docker run -d --cap-drop ALL --cap-add NET_BIND_SERVICE nginx:stable
6.2 镜像安全扫描
定期扫描镜像中的漏洞:
bash复制docker scan nginx:stable
6.3 网络隔离
使用自定义网络提高安全性:
bash复制docker network create nginx-net
docker run -d --network nginx-net nginx:stable
7. 监控与维护
7.1 容器日志管理
查看实时日志:
bash复制docker logs -f my-nginx
配置日志驱动和轮转:
bash复制docker run -d \
--log-driver=json-file \
--log-opt max-size=10m \
--log-opt max-file=3 \
nginx:stable
7.2 资源监控
使用内置命令查看资源使用:
bash复制docker stats my-nginx
7.3 定期维护
- 清理无用容器和镜像:
bash复制docker system prune -f
- 更新镜像版本:
bash复制docker pull nginx:stable
docker stop my-nginx
docker rm my-nginx
docker run ... nginx:stable
