如何利用docker-compose,管理复杂多容器的应用?
发布于 作者:苏南大叔 来源:程序如此灵动~
苏南大叔,继续描述docker-compose的相关信息。这款docker-compose的常见使用方式,其实就一种:docker-compose up -d。当然,并不是说,docker-compose只有up -d这一种命令行使用方式。只不过,up -d这条命令最常见罢了。其它的docker-compose命令,基本上可能也用不到。

在实际开发中,往往需要多种业务逻辑流程。比如在WEB中和数据库的交互,这样的应用就是典型的由多个容器组成,不需要用shell去启动这些容器,所有的容器将会以一种“服务组”的方式定义在一个配置文件中。这个组件服务入口是docker-compse配置文件docker-compose.yml。
docker-compose是用于定义和运行复杂Docker应用的工具。你可以在一个docker-compose.yml文件中,定义一个多容器的应用,然后使用一条docker-compose up -d命令来启动你的应用,所有相关的操作都会被自动完成。
简单的例子docker-compose.yml
下面是个docker-compose.yml的范例:(注意在每个属性配置时冒号后面必须加空格符)
version: "3"
services:
App1:
image: registry.cn-hangzhou.aliyuncs.com/test/node8js:v8.11.3-3
ports:
- "8361:8361"
volumes:
- /website/:/website/
Rsync:
image: registry.cn-hangzhou.aliyuncs.com/test/rsync
ports:
- "873:873"
volumes:
- /website/:/website/官方的version3文件说明,请点击下面的链接查看:
苏南大叔的简要说明:
docker-compose.yml这个前后有好多个版本,目前最新的版本就是version:"3"了。所以,最开始的一句话就是version,用的是yml的格式。- 这个
yml文件定义了三个服务。分别是:App1、Rsync、kafka三个服务。 build的意思,是从某个目录下构建镜像。image是使用什么镜像,如果本地没有该镜像,会自动从服务器地址上下载该镜像。ports是指端口映射,和docker run里面的-p一样的效果。volumes这个是目录映射,和docker run里面的-v一样的效果。environment这个是指环境变量,和docker run里面的-e一样的效果。
常用docker-compose命令
定义好合适的docker-compose.yml文件之后,启动的语句就一句话,如下图所示。
docker-compose up -d非常的简单易懂。所以在本文中,主要的篇幅用于描述docker-compose.yml这个文件的组成。
其它docker-compose命令
docker-compose脚本可以用来启动、停止、重启应用和所有的应用中的服务,docker-compose的完整的命令如下:
| 指令 | 内容 |
|---|---|
build | Build or rebuild services |
help | Get help on a command |
kill | Kill containers |
logs | View output from containers |
port | Print the public port for a port binding |
ps | List containers |
pull | Pulls service images |
restart | Restart services |
rm | Remove stopped containers |
run | Run a one-off command |
scale | Set number of containers for a service |
start | Start services |
stop | Stop services |
up | Create and start containers |
可以查看服务的日志:
docker-compose logs关闭一组docker:
docker-compose down结论
本文只涉及了最基础的docker-compose使用系你想,更多的docker-compose使用技巧,可以参见下面的链接: