在主机上同时运行多个Docker容器是Docker的核心功能之一。以下是详细的操作方法和最佳实践:
docker run -d --name container1 nginx
docker run -d --name container2 redis
docker ps
docker-compose.yml
文件:version: '3'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
cache:
image: redis
启动所有服务:
docker-compose up -d
# 启动多个容器
docker start container1 container2 container3
# 停止多个容器
docker stop $(docker ps -q)
docker run -d --name limited_container --cpus 1 --memory 512m nginx
docker stats
docker network create my_network
docker run -d --net my_network --name web1 nginx
docker run -d --net my_network --name web2 nginx
# 在web1容器中ping web2
docker exec web1 ping web2
# 创建共享卷
docker volume create shared_vol
# 多个容器挂载同一卷
docker run -d -v shared_vol:/data --name app1 myapp
docker run -d -v shared_vol:/data --name app2 myapp
对于大规模部署,建议使用: - Docker Swarm - Kubernetes
docker logs -f container1 container2
- cAdvisor - Prometheus + Grafana
端口冲突:
-p 8080:80
改为-p 8081:80
资源不足:
docker update --memory 1g --cpus 2 container_name
容器启动顺序:
在docker-compose中使用depends_on
或健康检查
最佳实践建议:
1. 为每个容器设置明确的资源限制
2. 使用Docker Compose管理相关容器组
3. 为生产环境配置日志轮转
4. 定期清理无用容器:docker system prune
通过以上方法,您可以高效地在单台主机上运行和管理多个Docker容器。根据实际需求选择适合的部署方式,简单应用可以用直接运行的方式,复杂应用建议使用Docker Compose或更高级的编排工具。