Docker 部署实战:在 VPS 上从零搭建容器环境,轻松管理网站与应用
目录
引言
在当今云计算和容器化技术飞速发展的时代,Docker 已经成为 DevOps 领域不可或缺的工具。本教程将带你从零开始在 VPS 上搭建完整的 Docker 容器环境,并轻松管理你的网站与应用。
无论你是系统管理员、开发人员,还是对容器技术感兴趣的学习者,掌握 Docker 部署技能都将大大提升你的工作效率和技术竞争力。
准备工作
系统要求
- 操作系统:Ubuntu 20.04/22.04 LTS 或 CentOS 7/8
- 内存:至少 2GB RAM
- 存储空间:至少 20GB 可用磁盘空间
- 网络:稳定的互联网连接
获取 VPS
你可以从以下服务商获取 VPS:
- DigitalOcean:简单易用,适合初学者
- Linode:性能稳定,价格实惠
- AWS EC2:功能强大,生态完善
- 阿里云/腾讯云:国内访问速度快
安装 Docker
Ubuntu 系统
# 更新系统包 sudo apt update # 安装必要依赖 sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release # 添加 Docker GPG 密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 设置 Docker 稳定版仓库 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 安装 Docker Engine sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io # 验证安装 docker --version sudo docker run hello-world
CentOS 系统
# 安装 yum 插件 sudo yum install -y yum-utils # 添加 Docker 仓库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装 Docker sudo yum install docker-ce docker-ce-cli containerd.io # 启动 Docker 服务 sudo systemctl start docker sudo systemctl enable docker # 验证安装 docker --version sudo docker run hello-world
安装 Docker Compose
# 下载 Docker Compose 二进制文件 sudo curl -L "https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # 设置执行权限 sudo chmod +x /usr/local/bin/docker-compose # 验证安装 docker-compose --version
部署应用
创建项目目录
mkdir -p ~/myapp cd ~/myapp
编写 Dockerfile
创建 Dockerfile 文件:
FROM node:18-alpine WORKDIR /app # 安装依赖 COPY package*.json ./ RUN npm install # 复制源代码 COPY . . # 暴露端口 EXPOSE 3000 # 启动应用 CMD ["npm", "start"]
创建 docker-compose.yml
version: '3.8'
services:
web:
build: .
ports:
- "3000:3000"
volumes:
- .:/app
- /app/node_modules
environment:
- NODE_ENV=production
restart: always
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./ssl:/etc/nginx/ssl:ro
depends_on:
- web
restart: always
日常管理
容器管理命令
# 查看所有容器 docker ps -a # 查看运行中的容器 docker ps # 查看日志 docker logs -f container_name # 进入容器 docker exec -it container_name bash # 重启容器 docker restart container_name # 停止容器 docker stop container_name # 删除容器 docker rm container_name
使用 Docker Compose 管理
# 启动服务 docker-compose up -d # 查看服务状态 docker-compose ps # 查看日志 docker-compose logs -f # 停止服务 docker-compose down # 重建服务 docker-compose up -d --build
故障排除
常见问题
- Docker 服务无法启动
sudo systemctl status docker sudo journalctl -u docker -n 50
- 端口被占用
sudo lsof -i :3000 sudo kill -9 PID
- 权限问题
sudo usermod -aG docker $USER newgrp docker
总结
恭喜你!你已经成功在 VPS 上搭建了 Docker 容器环境。现在你可以:
- 轻松部署和管理各种应用
- 利用容器化技术提高开发效率
- 实现环境的快速复制和迁移
- 构建更可靠的 CI/CD 流程
记住,实践是学习 Docker 的最佳方式。不断尝试、不断实验,你将成为容器化领域的专家!