Update compose

pull/249/head
khs1994 2017-11-26 09:54:04 +08:00
parent c5c10dd086
commit 584a3696a1
9 changed files with 33 additions and 32 deletions

View File

@ -1,5 +1,5 @@
# Docker Compose 项目
Docker Compose 是 Docker 官方编排Orchestration项目之一负责快速在集群中部署分布式应用。
`Docker Compose` 是 Docker 官方编排Orchestration项目之一负责快速在集群中部署分布式应用。
本章将介绍 Compose 项目情况以及安装和使用。
本章将介绍 `Compose` 项目情况以及安装和使用。

View File

@ -5,7 +5,7 @@
执行 `docker-compose [COMMAND] --help` 或者 `docker-compose help [COMMAND]` 可以查看具体某个命令的使用格式。
Compose 命令的基本的使用格式是
`docker-compose` 命令的基本的使用格式是
```bash
docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS...]

View File

@ -1,6 +1,6 @@
## 使用 Django
本小节内容适合 Python 开发人员阅读。
本小节内容适合 `Python` 开发人员阅读。
我们现在将使用 `Docker Compose` 配置并运行一个 `Django/PostgreSQL` 应用。
@ -57,7 +57,7 @@ $ docker-compose run web django-admin.py startproject django_example .
Compose 会先使用 `Dockerfile` 为 web 服务创建一个镜像,接着使用这个镜像在容器里运行 `django-admin.py startproject composeexample` 指令。
这将在当前目录生成一个 Django 应用。
这将在当前目录生成一个 `Django` 应用。
```bash
$ ls
@ -110,7 +110,7 @@ web_1 | Starting development server at http://0.0.0.0:8000/
web_1 | Quit the server with CONTROL-C.
```
这个 `Django` 应用已经开始在你的 Docker 守护进程里监听着 `8000` 端口了。打开 `127.0.0.1:8000` 即可看到 Django 欢迎页面。
这个 `Django` 应用已经开始在你的 Docker 守护进程里监听着 `8000` 端口了。打开 `127.0.0.1:8000` 即可看到 `Django` 欢迎页面。
你还可以在 Docker 上运行其它的管理命令,例如对于同步数据库结构这种事,在运行完 `docker-compose up` 后,在另外一个终端进入文件夹运行以下命令即可:

View File

@ -1,12 +1,12 @@
## 安装与卸载
Compose 目前支持 Linux、macOS、Windows 10 三大平台。
`Compose` 目前支持 Linux、macOS、Windows 10 三大平台。
Compose 可以通过 Python 的包管理工具 pip 进行安装,也可以直接下载编译好的二进制文件使用,甚至直接运行在 Docker 容器中。
`Compose` 可以通过 Python 的包管理工具 pip 进行安装,也可以直接下载编译好的二进制文件使用,甚至直接运行在 Docker 容器中。
前两种方式是传统方式,适合本地环境下安装使用;最后一种方式则不破坏系统环境,更适合云计算场景。
Docker for macOS 、Docker for Windows 自带 `docker-compose` 二进制文件,安装 Docker 之后可以直接使用。
`Docker for macOS``Docker for Windows` 自带 `docker-compose` 二进制文件,安装 Docker 之后可以直接使用。
```bash
$ docker-compose --version
@ -119,7 +119,7 @@ exec docker run --rm $DOCKER_RUN_OPTIONS $DOCKER_ADDR $COMPOSE_OPTIONS $VOLUMES
$ sudo rm /usr/local/bin/docker-compose
```
如果是通过 python pip 安装的,则执行如下命令即可删除。
如果是通过 `pip` 安装的,则执行如下命令即可删除。
```bash
$ sudo pip uninstall docker-compose

View File

@ -2,22 +2,22 @@
![Docker Compose 项目](_images/docker_compose.jpg)
Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。从功能上看,跟 OpenStack 中的 Heat 十分类似。
`Compose` 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。从功能上看,跟 `OpenStack` 中的 `Heat` 十分类似。
其代码目前在 [https://github.com/docker/compose](https://github.com/docker/compose) 上开源。
Compose 定位是 「定义和运行多个 Docker 容器的应用Defining and running multi-container Docker applications其前身是开源项目 Fig。
`Compose` 定位是 「定义和运行多个 Docker 容器的应用Defining and running multi-container Docker applications其前身是开源项目 Fig。
通过第一部分中的介绍,我们知道使用一个 `Dockerfile` 模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
Compose 恰好满足了这样的需求。它允许用户通过一个单独的 `docker-compose.yml` 模板文件YAML 格式来定义一组相关联的应用容器为一个项目project
`Compose` 恰好满足了这样的需求。它允许用户通过一个单独的 `docker-compose.yml` 模板文件YAML 格式来定义一组相关联的应用容器为一个项目project
Compose 中有两个重要的概念:
`Compose` 中有两个重要的概念:
* 服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
* 项目(project):由一组关联的应用容器组成的一个完整业务单元,在 `docker-compose.yml` 文件中定义。
Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。
`Compose` 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。
Compose 项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API就可以在其上利用 Compose 来进行编排管理。
`Compose` 项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API就可以在其上利用 `Compose` 来进行编排管理。

View File

@ -1,10 +1,11 @@
## 使用 Rail
本小节内容适合 Ruby 开发人员阅读。
本小节内容适合 `Ruby` 开发人员阅读。
我们现在将使用 Compose 配置并运行一个 Rails/PostgreSQL 应用。
我们现在将使用 `Compose` 配置并运行一个 `Rails/PostgreSQL` 应用。
在一切工作开始前,需要先设置好三个必要的文件。
在一切工作开始前,需要先设置好三个必要的文件。
首先,因为应用将要运行在一个满足所有环境依赖的 Docker 容器里面,那么我们可以通过编辑 `Dockerfile` 文件来指定 Docker 容器要安装内容。内容如下:
```docker
@ -33,7 +34,7 @@ services:
image: postgres
ports:
- "5432"
web:
build: .
command: bundle exec rackup -p 3000
@ -49,7 +50,7 @@ services:
```bash
$ docker-compose run web rails new . --force --database=postgresql --skip-bundle
```
Compose 会先使用 `Dockerfile` 为 web 服务创建一个镜像,接着使用这个镜像在容器里运行 `rails new ` 和它之后的命令。一旦这个命令运行完后,应该就可以看一个崭新的应用已经生成了。
`Compose` 会先使用 `Dockerfile` 为 web 服务创建一个镜像,接着使用这个镜像在容器里运行 `rails new ` 和它之后的命令。一旦这个命令运行完后,应该就可以看一个崭新的应用已经生成了。
```bash
$ ls

View File

@ -3,11 +3,11 @@
### 术语
首先介绍几个术语。
* 服务 (service):一个应用容器,实际上可以运行多个相同镜像的实例。
* 服务 (`service`):一个应用容器,实际上可以运行多个相同镜像的实例。
* 项目 (project):由一组关联的应用容器组成的一个完整业务单元。
* 项目 (`project`):由一组关联的应用容器组成的一个完整业务单元。
可见一个项目可以由多个服务容器关联而成Compose 面向项目进行管理。
可见,一个项目可以由多个服务(容器)关联而成,`Compose` 面向项目进行管理。
### 场景
下面,我们创建一个经典的 Web 项目:一个 [Haproxy](http://www.haproxy.org/),挂载三个 Web 容器。
@ -93,7 +93,7 @@ if __name__ == '__main__':
```
#### index.html
生成一个临时的 `index.html` 文件,其内容会被 index.py 更新。
生成一个临时的 `index.html` 文件,其内容会被 `index.py` 更新。
```bash
$ touch index.html
```
@ -145,7 +145,7 @@ backend web_backends
http-check expect status 200
```
### docker-compose.yml
编写 `docker-compose.yml` 文件,这个是 Compose 使用的主模板文件。内容十分简单,指定 3 个 web 容器,以及 1 个 haproxy 容器。
编写 `docker-compose.yml` 文件,这个是 `Compose` 使用的主模板文件。内容十分简单,指定 3 个 `web` 容器,以及 1 个 `haproxy` 容器。
```yaml
version: "3"
@ -201,6 +201,6 @@ Recreating composehaproxyweb_haproxy_1...
Attaching to composehaproxyweb_webb_1, composehaproxyweb_webc_1, composehaproxyweb_weba_1, composehaproxyweb_haproxy_1
```
此时访问本地的 80 端口,会经过 haproxy 自动转发到后端的某个 web 容器上,刷新页面,可以观察到访问的容器地址的变化。
此时访问本地的 `80` 端口,会经过 `haproxy` 自动转发到后端的某个 web 容器上,刷新页面,可以观察到访问的容器地址的变化。
访问本地 70 端口,可以查看到 haproxy 的统计信息。
访问本地 `70` 端口,可以查看到 `haproxy` 的统计信息。

View File

@ -1,8 +1,8 @@
## 使用 WordPress
本小节内容适合 PHP 开发人员阅读。
本小节内容适合 `PHP` 开发人员阅读。
Compose 可以很便捷的让 Wordpress 运行在一个独立的环境中。
`Compose` 可以很便捷的让 `Wordpress` 运行在一个独立的环境中。
### 创建空文件夹
@ -44,4 +44,4 @@ volumes:
### 构建并运行项目
运行 `docker-compose up -d` Compose 就会拉取镜像再创建我们所需要的镜像,然后启动 `wordpress` 和数据库容器。 接着浏览器访问 `127.0.0.1:8000` 端口就能看到 WordPress 安装界面了。
运行 `docker-compose up -d` Compose 就会拉取镜像再创建我们所需要的镜像,然后启动 `wordpress` 和数据库容器。 接着浏览器访问 `127.0.0.1:8000` 端口就能看到 `WordPress` 安装界面了。

View File

@ -1,6 +1,6 @@
## Compose 模板文件
模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多。但大家不用担心,这里面大部分指令跟 `docker run` 相关参数的含义都是类似的。
模板文件是使用 `Compose` 的核心,涉及到的指令关键字也比较多。但大家不用担心,这里面大部分指令跟 `docker run` 相关参数的含义都是类似的。
默认的模板文件名称为 `docker-compose.yml`,格式为 YAML 格式。