我们可以通过基本的docker命令来运行不同的容器,同时可以使用Docker Network使得不同容器之间可以互相沟通。但这种方式较为笨重。下面介绍如何使用Docker Compose来运行多个容器。
Docker Compose介绍
Docker Compose的作用就是设定多个容器。在一个软件项目中,可能需要使用多个微服,而这些微服可以选择运行在Docker容器中。Docker Compose就能起到把这些微服进行统一管理的作用。
比如:设定mongo及mongo-express容器:
version: '3'
services:
mongodb:
image: mongo
ports:
- 27017:27017
environment:
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=12345
mongo-express:
image: mongo-express
ports:
- 8081:8081
environment:
- ME_CONFIG_MONGODB_ADMINUSERNAME=admin
- ME_CONFIG_MONGODB_ADMINPASSWORD=12345
- ME_CONFIG_MONGODB_SERVER=mongodb
在使用Docker Compose的时候,无需在多个容器中指定同样的Docker Network:Docker Compose会自动创建Docker Network并将其与相关的容器绑定。
启动容器:
docker-compose -f demo.yaml up
关闭容器:
docker-compose -f demo.yaml down
在Ubuntu下安装Docker Compose
参考官网:https://docs.docker.com/compose/install/linux/
运行如下命令:
sudo apt-get install docker-compose-plugin
docker compose version
基于Docker Compose的开发流程
使用Dockerfile定义单独的微服并创建对应的镜像
使用Docker Compose将这些微服连接到一起,形成一个完整的应用
运行docker compose up命令,启动整个应用
Docker Compose常用命令
docker compose up: 启动所有服务
docker compose up -d: 以后台方式启动所有服务
docker compose down: 停止所有服务
docker compose start: 启动服务
docker compose stop: 停止服务
docker compose restart: 重启服务
docker compose exec SERVICE_ID /bin/bash: 进入某个服务对应的容器内部,并运行/bin/bash
docker compose ps:展示所有运行的编排过的容器
docker compose logs SERVICE_ID: 查看某个服务的日志
docker compose config: 检查配置
docker compose config -q: 检查配置,如果配置有问题,则输出相关信息