登录/注册
唐某
11055
占位
7
占位
31
浏览量
占位
粉丝
占位
关注
Docker Compose入门学习
唐某
2021-03-11 15:22:05 2021-03-11
462
0

Docker Compose入门学习

简介

我们之前操作Docker的过程是:DockerFile build run 进行手动操作,单个容器,如果假设我们有100个微服务,并行微服务之间还存在依赖关系。这个时候,我们就可以使用Docker Compose来轻松高效的管理容器,定义运行多个容器。

官方介绍:

  • 定义、运行多个容器
  • YAML file配置环境

Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,您可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。要了解有关Compose的所有特性的更多信息,请参阅特性列表

Compose可以在所有环境中工作:生产、阶段、开发、测试,以及CI工作流。您可以在常见用例中了解关于每个用例的更多信息

使用Compose基本上有三个步骤:

  • 用 Dockerfile 定义你的应用程序的环境,这样它就可以在任何地方复制。
  • 在 Docker-compose 中定义组成应用程序的服务。这样它们就可以在一个独立的环境中一起运行。
  • 运行 docker-compose up 和 Compose 启动并运行整个应用程序。

作用

批量容器编排

Compose是Docker官方的开源项目,需要安装!

Dockerfile 让程序在任何地方运行,web服务。Redis、MySQL、Nginx。。。多个容器

Compose的YAML文件如下所示

version: '2.0'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}

docker-compose up 100 个服务,也可以一键启动

Compose:重要的概念

  • 服务service,容器,应用(web,redis,mysql)
  • 项目project,就是一组关联的容器。

常见的Docker Compose脚本

下面这个是小伙伴开源的一些Docker Compose脚本,我们如果需要部署某个应用的时候,可以通过下面脚本,非常方便的进行部署

https://gitee.com/zhengqingya/docker-compose

安装Docker Compose

官方文档:https://docs.docker.com/compose/install/

下载

首先我们先安装一下Docker

# yum安装
yum -y install docker-ce
#查看docker版本
docker --version
# 设置开机自启
systemctl enable docker
# 启动docker
systemctl start docker

然后下载docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

授权

下载完成后,我们进入到下面的目录

cd /usr/local/bin

然后加入执行权限

sudo chmod +x docker-compose

查看是否安装成功

docker-compose version

创建文件体验

在这个页面中,您将构建一个运行在Docker撰写器上的简单Python web应用程序。该应用程序使用了烧瓶框架,并在Redis中维护了一个命中计数器。虽然示例使用Python,但是即使您不熟悉它,这里演示的概念也应该可以理解。

确保你已经安装了Docker引擎和Docker组合。你不需要安装Python或Redis,因为它们都是由Docker images提供的。

# 创建文件夹
mkdir composetest
# 进入该文件夹
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)

然后创建一个 requirements.txt 文件,里面需要依赖包

flask
redis

创建Docker file

在这个步骤中,您将编写一个构建Docker映像的Dockerfile。该映像包含Python应用程序需要的所有依赖项,包括Python本身。在您的项目目录中,创建一个名为Dockerfile的文件,并粘贴以下内容:

```bash

FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COP

暂无评论