是的,在 Ubuntu 系统中可以部署并运行多个 Docker 容器,这是 Docker 的基本功能之一。你不仅可以运行多个容器,还可以同时运行多个不同的服务(如 Nginx、MySQL、Redis、Node.js 应用等),每个服务都可以运行在独立的容器中。
下面是一些关键点来帮助你理解:
✅ 1. 一个 Docker 引擎可以管理多个容器
- 在 Ubuntu 上安装一个 Docker 引擎(Docker Engine)后,它就可以同时运行成百上千个容器。
- 每个容器是相互隔离的,拥有自己的文件系统、网络、端口等。
# 查看当前正在运行的容器
docker ps
# 查看所有容器(包括停止的)
docker ps -a
✅ 2. 如何运行多个容器?
你可以使用 docker run 启动多个容器:
# 运行一个 Nginx 容器
docker run -d -p 80:80 --name webserver nginx
# 运行一个 MySQL 容器
docker run -d -p 3306:3306 --name mysql_db -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
# 运行一个 Redis 容器
docker run -d -p 6379:6379 --name redis_cache redis
这三个容器会同时运行在同一个 Docker 引擎上。
✅ 3. 使用 Docker Compose 管理多个容器
更推荐的方式是使用 docker-compose.yml 文件来定义和启动多个容器:
# docker-compose.yml
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: 123456
ports:
- "3306:3306"
cache:
image: redis
ports:
- "6379:6379"
然后运行:
docker-compose up -d
这样一键启动多个服务。
✅ 4. 关于“多个 Docker”是否可能?
- ❌ 通常我们不会在一台机器上安装“多个 Docker 引擎”,因为一个 Docker 引擎就足够了。
- ✅ 但你可以在不同环境中使用:
- 多个 Docker 容器
- 多个 Docker 镜像
- 多个 Docker 网络/卷
- 使用 Docker Swarm 或 Kubernetes 管理多个节点上的 Docker
⚠️ 注意:不要混淆“多个 Docker 容器”和“多个 Docker 服务引擎”。一般一台主机只运行一个 Docker daemon(守护进程)。
✅ 5. Ubuntu 上安装 Docker 示例
# 更新包索引
sudo apt update
# 安装依赖
sudo apt install -y 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
# 添加仓库
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
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
# 可选:将用户加入 docker 组,避免每次用 sudo
sudo usermod -aG docker $USER
# 重启或重新登录生效
✅ 总结
| 问题 | 回答 |
|---|---|
| Ubuntu 能不能部署多个 Docker? | ✅ 可以运行多个 Docker 容器 |
| 能不能安装多个 Docker 引擎? | ❌ 一般不需要,也不推荐 |
| 如何管理多个容器? | 推荐使用 docker-compose |
| 是否支持多服务并发? | ✅ 支持,比如 Web + DB + Cache |
如果你有具体的应用场景(如部署一个 Web 项目 + 数据库 + 缓存),我也可以帮你写对应的 docker-compose.yml 示例。欢迎继续提问!
CLOUD技术博