VPS云服务器Linux系统Docker-compose多容器部署指南
文章分类:售后支持 /
创建时间:2026-01-07
在VPS云服务器的Linux环境里,想高效管理多个Docker容器?Docker-compose是个得力帮手。这个工具通过一份YAML配置文件就能统一管理多个容器,让多服务部署从“手忙脚乱”变成“一键搞定”。接下来一步步教你用它完成多容器协同部署。
### 一、前置准备:安装Docker与Docker-compose
要使用Docker-compose,首先得在VPS云服务器的Linux系统上安装Docker引擎和Docker-compose工具。以常见的Ubuntu系统为例:
安装Docker时,建议通过系统官方源操作,确保软件包未被篡改。执行以下命令:
```bash
sudo apt update
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
```
安装完成后,可通过`docker --version`验证是否成功。
接着安装Docker-compose。需注意,下载二进制文件后建议通过官方GPG签名验证完整性(具体方法可参考Docker官网文档),避免下载到恶意修改的版本。执行命令:
```bash
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
```
安装完成后,用`docker-compose --version`检查是否生效。
### 二、编写配置:Docker-compose.yml文件
假设要部署一个简单的Web应用,包含Nginx反向代理和Python Flask服务。在项目根目录创建`docker-compose.yml`,内容如下:
```yaml
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
nginx:
image: nginx:latest
ports:
- "80:80"
depends_on:
- web
```
这里定义了两个服务:`web`基于当前目录的Dockerfile构建镜像,映射5000端口;`nginx`使用官方镜像,映射80端口并依赖`web`服务启动。需注意,端口映射时若无需公网访问,尽量避免将容器端口直接暴露到主机公网IP(如可改为`127.0.0.1:80:80`),减少被攻击的风险——就像给房子的窗户加层护栏,能挡住大部分不速之客。
### 三、构建镜像:创建Dockerfile
在同一目录下创建`Dockerfile`,定义`web`服务的镜像构建规则:
```Dockerfile
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]
```
这里选择`python:3.9-slim`轻量级基础镜像,能减少不必要的软件包,降低被攻击的可能性——就像轻装上阵,负担越小越安全。`--no-cache-dir`参数则避免缓存残留,保持镜像清洁。
### 四、启动与管理服务
所有配置准备好后,在`docker-compose.yml`所在目录执行:
```bash
docker-compose up -d
```
`-d`参数让服务在后台运行。启动后,可用`docker-compose ps`查看服务状态,若看到`Up`字样说明运行正常。
日常维护时,建议定期通过`docker-compose logs`查看服务日志,及时发现异常——就像定期检查家里的水电表,有问题能早发现。若需停止服务,执行:
```bash
docker-compose down
```
此命令会停止并移除容器,但不会删除数据卷。如需彻底清理(如测试环境),可添加`-v`参数,但需谨慎操作避免数据丢失。
通过上述步骤,在VPS云服务器的Linux系统中用Docker-compose部署多容器已不再复杂。这种模式不仅提升了部署效率,更让后续的扩展和维护变得灵活——添加新服务只需修改YAML文件,一键即可完成更新。无论是搭建个人博客还是企业级应用,掌握这一技能都能让你的VPS云服务器发挥更大价值。
工信部备案:苏ICP备2025168537号-1