Docker---编排工具--Docker Compose
时间:2016-12-09 18:52 来源:linux.it.net.cn 作者:IT
编排
编排(orchestration),指自动配置、协作和管理服务的过程,在 Docker 中,编排用来描述一组实践过程,这个过程会管理运行在多个 Docker 里的应用,这些 Docker 容器也可能运行在不同的宿主机上。
关于 Docker Compose
本文主要介绍 Docker 编排工具 Docker Compose ,由 Python 编写。使用 Docker Compose ,可以用一个 YAML 文件定义一组要启动的容器,以及容器运行时的属性。Docker Compose 称这些容器为“服务”:
容器通过某些方法并制定一些运行时的属性来和其他容器产生交互。
安装 Docker Compose
Docker Compose 的安装,官方文档非常详细:https://docs.docker.com/compose/install/
Docker Compose 目前可以安装在 Linux、Windows 和 OS X上。可以从 GIthub 直接下载可执行安装包,也可以通过 pip 安装pip install docker-compose
, 这里采用前者:
-
从 Github 下载 docker-compose 可执行程序并到 /usr/local/bin 目录中,并赋予可执行权限。
-
1
-
2
-
3
-
1
-
2
-
3
-
测试 Docker Compose 是否工作
-
1
-
2
-
1
-
2
Docker Compose 应用示例
这里通过一个 Python Flask 应用来演示 Docker Compose 的使用,需要用到两个容器:
-
应用容器:运行 Python 示例程序
-
Redis容器:运行 Redis 数据库
1.创建项目目录
-
1
-
2
-
1
-
2
2.创建 Python Flask 应用 app.py
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
这个简单的 Flask 应用追踪保存在 Redis 里的计数器。每次访问根路径/时,计数器将自增。
3.创建 requirements.txt 保存程序依赖
-
1
-
2
-
1
-
2
4.创建 Docker image
这一步骤创建 Docker image,该镜像包含Python应用程序需要的所有依赖关系,包括Python本身。
-
在项目中创建 Dockerfile 文件如下:
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
构建镜像
-
1
-
1
这里通过 Dockerfile 的方式构建了 web 镜像,Redis 容器的镜像则直接从 Docker Hub 拉取(我这里提前pull下来了)。
-
1
-
1
5.通过 docker-compose.yml 定义服务
在项目目录下创建 docker-compose.yml 文件来定义一组服务。docker-compose.yml 是 YAML 格式的文件,每个要启用的服务都使用一个 YAML 的散列键定义,服务以 Docker 容器的形式表现,同时定义服务启动时的运行属性。
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
这个 Compose 文件定义了两组服务, web
和 redis
。web 服务:
-
指定使用的镜像 web
-
web容器内的 5000 端口映射到主机的 5000 端口。
-
将当前项目目录挂载到容器的 /composeapp 目录,一遍无需重新构建镜像即可修改代码。
-
将 web 服务连接至 Redis 服务。
Redis 服务直接从 Docker Hub 拉取最新的 Redis 镜像使用,这个镜像默认会在标准端口上启动一个 Redis 数据库。
Compose 可以像 web 服务中那样指定要使用的镜像,也可以构建 Docker 镜像,使用 build 指令,并提供 Dockerfile 所在路径,例如使用当前目录下的 Dockerfile 构建镜像并使用:
-
1
-
2
-
1
-
2
如果使用相同的配置,在命令行中使用 docker run 执行服务,需要执行以下命令:
-
1
-
1
6.运行 Compose
docker-compose up
在项目目录中,通过 docker-compose up
启动应用
-
1
-
1
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
大多数的 Compose 命令必须在 docker-compose.yml 文件所在目录下执行
可以看到 Compose 创建了 composeapp_redis_1
和 composeapp_web_1
两个服务。为保证服务唯一,Compose 将 docker-compose.yml 文件中指定的服务名字加上目录作为前缀,并分别使用数字作为后缀。
Compose 接管了每个服务输出的日志,输出的日志每一行都使用缩短的服务名作为前缀,并交替输出在一起。
-
1
-
1
#### docker-compose up -d
使用 Ctrl + C 停止 Compose 的同时,也会停止运行的服务,可以在运行 Compose 时执行 -d ,以守护进程的模式来运行服务(类似于 docker run -d )
-
1
-
2
-
3
-
4
-
1
-
2
-
3
-
4
验证服务
-
1
-
2
-
1
-
2
每次请求,Redis中保存的计数器就会加1
7.Compose其他命令
docker-compose ps
列出本地 docker-compose.yml 文件定义的正在运行的所有服务,查看服务运行状态
-
1
-
2
-
3
-
4
-
5
-
1
-
2
-
3
-
4
-
5
docker-compose logs
显示 Docker Compose 服务日志
-
1
-
2
-
3
-
4
-
5
-
6
-
1
-
2
-
3
-
4
-
5
-
6
docker-compose stop
停止正在运行的服务
-
1
-
2
-
3
-
1
-
2
-
3
该命令会同时停止两个服务,如果服务没有停止,可以使用docker-compose kill
强制杀死
docker-compose start
如果使用docker-compose stop
或docker-compose kill
停止服务,还可以使用docker-compose
重启这些服务。
docker-compose rm
删除 Docker Compose 服务,两个服务均会被删除
-
1
-
2
-
3
-
4
-
5
-
1
-
2
-
3
-
4
-
5
以上就是 Docker Compose的简单使用,更多内容可以参考官网:http://www.docker.com/products/docker-compose
(责任编辑:IT)
编排
关于 Docker Compose
安装 Docker ComposeDocker Compose 的安装,官方文档非常详细:https://docs.docker.com/compose/install/
Docker Compose 目前可以安装在 Linux、Windows 和 OS X上。可以从 GIthub 直接下载可执行安装包,也可以通过 pip 安装
Docker Compose 应用示例这里通过一个 Python Flask 应用来演示 Docker Compose 的使用,需要用到两个容器:
1.创建项目目录
2.创建 Python Flask 应用 app.py
这个简单的 Flask 应用追踪保存在 Redis 里的计数器。每次访问根路径/时,计数器将自增。 3.创建 requirements.txt 保存程序依赖
4.创建 Docker image这一步骤创建 Docker image,该镜像包含Python应用程序需要的所有依赖关系,包括Python本身。
这里通过 Dockerfile 的方式构建了 web 镜像,Redis 容器的镜像则直接从 Docker Hub 拉取(我这里提前pull下来了)。
5.通过 docker-compose.yml 定义服务在项目目录下创建 docker-compose.yml 文件来定义一组服务。docker-compose.yml 是 YAML 格式的文件,每个要启用的服务都使用一个 YAML 的散列键定义,服务以 Docker 容器的形式表现,同时定义服务启动时的运行属性。
这个 Compose 文件定义了两组服务,
Redis 服务直接从 Docker Hub 拉取最新的 Redis 镜像使用,这个镜像默认会在标准端口上启动一个 Redis 数据库。
6.运行 Composedocker-compose up
在项目目录中,通过
可以看到 Compose 创建了 Compose 接管了每个服务输出的日志,输出的日志每一行都使用缩短的服务名作为前缀,并交替输出在一起。
#### docker-compose up -d 使用 Ctrl + C 停止 Compose 的同时,也会停止运行的服务,可以在运行 Compose 时执行 -d ,以守护进程的模式来运行服务(类似于 docker run -d )
验证服务
每次请求,Redis中保存的计数器就会加1 7.Compose其他命令docker-compose ps列出本地 docker-compose.yml 文件定义的正在运行的所有服务,查看服务运行状态
docker-compose logs显示 Docker Compose 服务日志
docker-compose stop停止正在运行的服务
docker-compose start
如果使用 docker-compose rm删除 Docker Compose 服务,两个服务均会被删除
![]()
以上就是 Docker Compose的简单使用,更多内容可以参考官网:http://www.docker.com/products/docker-compose (责任编辑:IT) |