Docker学习笔记(十九)— Docker Compose

Docker Alice 5个月前 (12-24) 199次浏览 0个评论

一、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 学习笔记(十九)— Docker Compose
Docker 学习笔记(十九)— Docker Compose
Docker 学习笔记(十九)— Docker Compose

如果想在后台运行程序,可以使用命令docker-compose up -d
如果不使用默认的 docker-compose.yml 文件名,可以通过命令docker-compose -f server.yml up -d运行程序

5、停止应用程序

方法一:在第二个终端进入测试目录,运行docker-compose down命令
方法二:在当前启动应用程序的终端按 CTRL+C

Docker 学习笔记(十九)— Docker Compose

 

分享:Docker 学习视频地址:【狂神说 Java】Docker 进阶篇超详细版教程通俗易懂


女程序员博客 , 版权所有丨本站采用BY-NC-SA协议进行授权 , 转载请注明Docker 学习笔记(十九)— Docker Compose

【声明】:本博客仅为分享信息,不参与任何交易,也非中介,所有内容仅代表个人观点,均不作直接、间接、法定、约定的保证,读者购买风险自担。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。

【关于安全】:任何 IDC 都有倒闭和跑路的可能,备份永远是最佳选择,服务器也是机器,不勤备份是对自己极不负责的表现,请保持良好的备份习惯。

喜欢 (4)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址