Docker Compose是一个用于Docker容器编排和部署的工具,随着项目需要发布的容器数量越来越多,容器与容器间的依赖关系变得复杂,将每个容器作为一个独立的个体来进行维护将会对集群运维人员造成极大的负担,而Docker Compose正是为了解决这一痛点,能够让我们通过配置,定义容器集群的编排与部署
Compose中有两个重要的概念:
- 服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例
- 工程 (project):由一组关联的应用容器组成的一个完整业务单元
服务以容器为基础,一个服务可包括多个容器实例,一个工程包含多个服务,由每个运行目录下所有docker-compose.yml
文件中定义的服务组成
安装(CentOS)
Docker Compose在CentOS上的安装非常简单,只需要以下两步
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
核心配置文件(docker-compose.yml
)
类似于通过编写Dockerfile
我们可以定义一个Docker容器,Docker Compose中也有这样一份用于定义容器集群编排与部署的文件docker-compose.yml
,以下是一个简单的样例:
version: "3"
services: //定义服务集合
webapp: //具体服务名
image: examples/web //启动的镜像
ports:
- "80:80"
network_mode: "host"
volumes:
- "/data:/data"
networks: //加入Docker网络
- net1
webapp2:
build: //通过Dockerfile创建服务的容器
context: ./ //Dockerfile构建上下文
dockerfile: Dockerfile //Dockerfile文件名
ports:
- "80:80"
environment:
JVM_MEM_OPTS: -Xmx500m //配置容器环境变量
networks: //可用服务名直接访问网络中其它容器服务
- net1
networks: //定义Docker网络
net1:
Docker Compose命令
-
ps
:列出所有运行容器docker-compose ps
-
logs
:查看服务日志输出docker-compose logs
-
build
:构建或者重新构建服务docker-compose build
-
start
:启动指定服务已存在的容器docker-compose start app
-
stop
:停止已运行的服务的容器docker-compose stop app
-
up
:构建、启动容器docker-compose up
- -d 后台运行
- --build 强制构建
-
down
:停止并删除已运行的服务的容器docker-compose down