Docker实战之docker-compose安装及命令配置概述
在实际生产环境中,一个应用往往由许多服务构成;而 docker 的最佳实践是一个容器只运行一个进程,因此运行多个微服务就要运行多个容器。多个容器协同工作需要一个有效的工具来管理他们,定义这些容器如何相互关联,compose 就应运而生了。
compose 是用来定义和运行一个或多个容器(通常都是多个)运行和应用的工具,其使用 YAML 文件来定义多容器之间的关系。使用 compose 可以简化容器镜像的构建以及容器的运行。
Docker Compose能够在 Docker 节点上,以单引擎模式(Single-Engine Mode)进行多容器应用的部署和管理。多数的现代应用通过多个更小的微服务互相协同来组成一个完整可用的应用。一个 docker-compose up 就可以把完整的应用跑起来; 本质上compose 把 YAML 文件解析成 docker 命令的参数,然后调用相应的 docker 命令行接口,从而将应用以容器化的方式管理起来。它通过解析容器间的依赖关系顺序地启动容器。而容器间的依赖关系由 YAML 文件中的 links 标记指定。
通常,部署和管理繁多的服务是困难的,而这正是 Docker Compose 要解决的问题。Docker Compose 并不是通过脚本和各种冗长的 docker 命令来将应用组件组织起来,而是通过一个声明式的配置文件描述整个应用,从而使用一条命令完成部署。应用部署成功后,还可以通过一系列简单的命令实现对其完整声明周期的管理。甚至,配置文件还可以置于版本控制系统中进行存储和管理。
Docker compose安装有很多种方式,本文实践采用rpm文件进行安装。安装之后对其可执行文件进行软连接方便使用,如下:
可参考官网Compose specification | Docker Documentation关于Docker Compose配置文件的说明Compose specification | Docker Documentation:
默认使用文件名 compose.yml,YAML 是 JSON 的一个子集,因此也可以使用JSON。当然,也可以使用 -f 参数指定具体文件。其中YAML 文件包含的一级 key有——version (DEPRECATED), services (REQUIRED), networks, volumes, configs and secret:
1)version 是必须指定的,而且总是位于文件的第一行。它定义了 Compose 文件格式(主要是API)的版本。注意,version 并非定义 Docker Compose 或 Docker 引擎的版本号。
2)services 用于定义不同的应用服务。Docker Compose 会将每个服务部署在各自的容器中。
3)networks 用于指引 Docker 创建新的网络。默认情况下,Docker Compose 会创建 bridge 网络。这是一种单主机网络,只能够实现同一主机上容器的连接。当然,也可以使用 driver 属性来指定不同的网络类型。
4)volumes 用于指引 Docker 来创建新的卷。
docker-compose命令使用可参考Overview of docker-compose CLI | Docker Documentation,不限于下列命令:
启动服务:docker-compose up -d
停止服务:docker-compose down
列出所有运行容器:docker-compose ps
查看服务日志:docker-compose logs
构建或者重新构建服务:docker-compose build
启动服务:docker-compose start
停止已运行的服务:docker-compose stop
重启服务:docker-compose restart
具体使用可参考后续利用docker实现的nginx反向代理Docker工具之docker-compose应用实践~Nginx反向代理 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)。