Docker Compose入门学习
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文件如下所示
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
bash
# yum安装
yum -y install docker-ce
#查看docker版本
docker --version
# 设置开机自启
systemctl enable docker
# 启动docker
systemctl start docker
然后下载docker-compose
bash
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
授权
下载完成后,我们进入到下面的目录
bash
cd /usr/local/bin
然后加入执行权限
bash
sudo chmod +x docker-compose
查看是否安装成功
bash
docker-compose version
创建文件体验
在这个页面中,您将构建一个运行在Docker撰写器上的简单Python web应用程序。该应用程序使用了烧瓶框架,并在Redis中维护了一个命中计数器。虽然示例使用Python,但是即使您不熟悉它,这里演示的概念也应该可以理解。
确保你已经安装了Docker引擎和Docker组合。你不需要安装Python或Redis,因为它们都是由Docker images提供的。
bash
# 创建文件夹
mkdir composetest
# 进入该文件夹
cd composetest
然后我们需要创建一个 app.py 文件
bash
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 文件,里面需要依赖包
py
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
