mirror of
https://github.com/yeasy/docker_practice.git
synced 2024-12-25 14:38:54 +00:00
Update compose
This commit is contained in:
parent
c5c10dd086
commit
584a3696a1
@ -1,5 +1,5 @@
|
||||
# Docker Compose 项目
|
||||
|
||||
Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用。
|
||||
`Docker Compose` 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用。
|
||||
|
||||
本章将介绍 Compose 项目情况以及安装和使用。
|
||||
本章将介绍 `Compose` 项目情况以及安装和使用。
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
执行 `docker-compose [COMMAND] --help` 或者 `docker-compose help [COMMAND]` 可以查看具体某个命令的使用格式。
|
||||
|
||||
Compose 命令的基本的使用格式是
|
||||
`docker-compose` 命令的基本的使用格式是
|
||||
|
||||
```bash
|
||||
docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS...]
|
||||
|
@ -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` 后,在另外一个终端进入文件夹运行以下命令即可:
|
||||
|
||||
|
@ -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
|
||||
|
@ -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` 来进行编排管理。
|
||||
|
@ -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
|
||||
|
@ -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` 的统计信息。
|
||||
|
@ -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` 安装界面了。
|
||||
|
@ -1,6 +1,6 @@
|
||||
## Compose 模板文件
|
||||
|
||||
模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多。但大家不用担心,这里面大部分指令跟 `docker run` 相关参数的含义都是类似的。
|
||||
模板文件是使用 `Compose` 的核心,涉及到的指令关键字也比较多。但大家不用担心,这里面大部分指令跟 `docker run` 相关参数的含义都是类似的。
|
||||
|
||||
默认的模板文件名称为 `docker-compose.yml`,格式为 YAML 格式。
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user