一、Compose 介绍
Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,使用 YAML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Compose 使用的三个步骤:
- 使用 Dockerfile 定义应用程序的环境。
- 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
- 最后,执行
docker-compose up
命令来启动并运行整个应用程序。Compose 是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。
使用 Docker Compose 可以轻松、高效的管理容器。
docker-compose.yml 示例如下
version: "3.9" # optional since v1.27.0 services: web: build: . ports: - "5000:5000" volumes: - .:/code - logvolume01:/var/log links: - redis redis: image: redis volumes: logvolume01: {}
二、Compose 安装
1、下载
[root@cloud ~]# sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # 若是 github 下载速度太慢,可以使用 daocloud 下载 curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
2、授权
sudo chmod +x /usr/local/bin/docker-compose
3、查看安装是否成功
[root@cloud bin]# docker-compose --version docker-compose version 1.29.2, build 5becea4c [root@cloud bin]# docker-compose -v docker-compose version 1.29.2, build 5becea4c [root@cloud bin]# docker-compose version docker-compose version 1.29.2, build 5becea4c docker-py version: 5.0.0 CPython version: 3.7.10 OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
三、使用
1、准备
①. 创建一个测试目录 composetest
[root@cloud home]# mkdir composetest [root@cloud home]# cd composetest/
②. 在测试目录下创建一个 app.py 文件,内容:
import time import redis from flask import Flask app = Flask(__name__) cache = redis.Redis(host='redis', port=6379) def get_hit_count(): retries = 5 while True: try: return cache.incr('hits') except redis.exceptions.ConnectionError as exc: if retries == 0: raise exc retries -= 1 time.sleep(0.5) @app.route('/') def hello(): count = get_hit_count() return 'Hello World! I have been seen {} times.\n'.format(count)
这是一个简单的 Python Web 应用程序,一个用 Redis 维护的计数器。
redis 是应用程序网络上的 redis 容器的主机名,该主机使用的端口为 6379。
③. 在测试目录下创建 requirements.txt 文件,内容:
flask redis
2、创建 Dockerfile 文件
在测试目录中创建一个名为 Dockerfile 的文件,内容:
FROM python:3.6-alpine ADD . /code WORKDIR /code RUN pip install -r requirements.txt CMD ["python", "app.py"]
Dockerfile 内容解释:
1. 从 python3.6 开始构建映像
2. 将当前目录.添加到/code 映像中的路径中
3. 将工作目录设置为/code
4. 安装 python 依赖项
5. 将容器的默认命令设置为 python app.py
3、创建 docker-compose.yml
在测试目录中创建一个名为 docker-compose.yml
的文件,内容:
version: "3.8" services: web: build: . ports: - "5000:5000" volumes: - .:/code redis: image: "redis:alpine"
此 compose 文件定义了 2 个服务:web 和 redis
web:
该 web 服务使用从 Dockerfile 当前目录中构建的镜像。
将容器上的公开端口 5000 转发到主机上的端口 5000。(此示例服务使用 Flask Web 服务器的默认端口是 5000)
redis:
该 redis 服务使用 Docker Hub 的公共 Redis 映像。
4、使用 Compose 命令构建和运行应用
在测试目录执行docker-compose up
命令来启动应用程序
[root@cloud composetest]# docker-compose up
如果想在后台运行程序,可以使用命令
docker-compose up -d
如果不使用默认的 docker-compose.yml 文件名,可以通过命令docker-compose -f server.yml up -d
运行程序
5、停止应用程序
方法一:在第二个终端进入测试目录,运行
docker-compose down
命令
方法二:在当前启动应用程序的终端按 CTRL+C
分享:Docker 学习视频地址:【狂神说 Java】Docker 进阶篇超详细版教程通俗易懂