一台ubuntu部署多个docker服务?

在一台 Ubuntu 服务器上部署多个 Docker 服务是非常常见的做法。你可以通过运行多个容器来实现,每个服务使用不同的端口、配置和镜像。下面是详细的步骤和最佳实践:


✅ 前提条件

  • 已安装 Docker 和 Docker Compose(推荐)
  • Ubuntu 系统(18.04 或以上版本均可)
  • 基本的 Linux 操作知识

🛠️ 方法一:使用 docker run 手动运行多个服务

你可以为每个服务分别运行一个容器,并指定不同的端口映射。

示例:部署 Nginx 和 MySQL

# 启动 Nginx
docker run -d 
  --name mynginx 
  -p 80:80 
  nginx

# 启动 MySQL
docker run -d 
  --name mysql 
  -e MYSQL_ROOT_PASSWORD=my-secret-pw 
  -p 3306:3306 
  mysql:latest

-d 表示后台运行,--name 是容器名,-p 是端口映射。


🧱 方法二:使用 Docker Compose 编排多个服务(推荐)

Docker Compose 是管理多服务应用的最佳工具。你只需要编写一个 docker-compose.yml 文件即可定义所有服务。

示例:创建 docker-compose.yml

version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
    container_name: myweb

  db:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: my-secret-pw
    ports:
      - "3306:3306"
    container_name: mydb

然后执行命令启动服务:

docker-compose up -d

使用 -d 参数表示后台运行。


🔄 常用操作命令

操作 命令
查看运行中的容器 docker ps
查看所有容器 docker ps -a
停止所有容器 docker stop $(docker ps -aq)
删除所有容器 docker rm $(docker ps -aq)
查看日志 docker logs <container_id>
进入容器内部 docker exec -it <container_id> bash

📦 部署多个 Web 应用(如多个网站)

如果你要部署多个 Web 应用(比如 WordPress + Node.js + Django),可以通过 Nginx 反向X_X + 不同端口或域名 来区分。

示例结构:

服务 映射端口 访问方式
WordPress 8080 http://ip:8080
Node.js 3000 http://ip:3000
Django 8000 http://ip:8000

也可以使用 Traefik 或 Nginx 做虚拟主机按域名访问。


🌐 使用自定义网络(可选)

多个容器之间通信时,建议使用自定义 Docker 网络:

docker network create mynetwork

然后在 docker rundocker-compose.yml 中指定网络。


🔒 安全建议

  • 不要将敏感服务暴露到公网(如 MySQL 直接开放 3306)。
  • 使用防火墙限制端口访问。
  • 使用 HTTPS(可用 Traefik 自动申请证书)。
  • 容器中尽量不要以 root 用户运行服务。

✅ 总结

方式 优点 适用场景
docker run 快速简单 测试/少量服务
Docker Compose 易维护、结构清晰 多个服务编排
Kubernetes 强大灵活 生产环境大规模部署

如果你想具体部署某些服务(如 WordPress + Redis + MySQL),可以告诉我,我可以给你一份完整的 docker-compose.yml 示例。

是否需要?😊

未经允许不得转载:ECLOUD博客 » 一台ubuntu部署多个docker服务?