compose

概念

compose是docker官方出品的一个python编写的容器编排工具,是启动容器的脚本,在脚本里指明启动容器的顺序,启动多少容器,每个容器的具体参数

1、对容器进行什么操作
答:启动容器,可以指定端口,卷,链接,使用哪个镜像等,平时我们使用命令行来指定,现在起文件来传参
2、对多少容器进行编排
答:1>=1
3、对多少台宿主机的容器进行编排操作
答:一台

Compose 文件是一个YAML文件,定义了 服务、 网络和 卷。Compose 文件的默认路径是./docker-compose.yml.

好处

1、快速批量启动容器,效率高
2、不容易出错,可靠

compose安装

安装compose前,必须安装docker引擎

准备

1、到github上下载

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

由于限制网络或者某些原因可以在国内镜像

道一云:curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

2、授予Compose可执行权限

chmod +x /usr/local/bin/docker-compose

查看版本

docker-compose -v

步骤

1、为项目创建一个目录

mkdir composetest
cd composetest

2、在你的项目目录中创建一个名为app.py的文件,并将以下代码粘贴到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)

由于里面用到flsak和redis,所以需要下载这两个,创建一个requirements.txt在你的项目目录中创建另一个文件并将其粘贴:

flask
redis

3、创建一个 Dockerfile

# syntax=docker/dockerfile:1
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
COPY . .
CMD ["flask", "run"]

4、在您的项目目录中创建一个名为docker-compose.yml的文件并粘贴以下内容:

version: "3.9"
services:
  web:
    build: .
    ports:  #指定端口(默认)
          - "5000:5000"
  redis:  #创建一个redis镜像
    image: "redis:alpine"

yaml文件注意缩进,大小写敏感

这个 Compose 文件定义了两个服务:web和redis.

web
该web服务使用从Dockerfile当前目录中构建的映像。然后它将容器和主机绑定到暴露的端口5000. 此示例服务使用 Flask,Web 服务器的默认端口5000.

Redis服务 该redis服务使用 从 Docker Hub 注册表中提取的公共Redis映像。(若没有镜像会去下载)

5、使用 Compose 构建并运行您的应用程序
1、启动

docker-compose up

Compose 会拉取一个 Redis 镜像,为您的代码构建一个镜像,并启动您定义的服务。在这种情况下,代码会在构建时静态复制到映像中。
注意:如果出现,多半是因为挂起状态无法联网,请重启service docker restart
compose_第1张图片
出现以下页面不用管,在开一个终端,因为前台在运行这个进程,前端资源没有被释放,请不要Ctrl+C停止,若不写前端被占有 up 的时候接选项 -d
compose_第2张图片
2、在浏览器中输入 http://localhost:5000/ 以查看应用程序正在运行。
请添加图片描述

刷新页面。 数字应该递增。

3、切换到另一个终端窗口,然后输入docker image ls以列出本地图像。
此时列出图像应返回redis和web。
4、停止应用程序,方法是在第二个终端的项目目录中运行docker-compose down ,或者在启动应用程序的原始终端中按 CTRL+C。

6、尝试一些其他命令
停止服务:

docker-compose stop

使用以下命令关闭所有内容,完全删除容器。传递–volumes给 Redis 容器使用的数据卷:

docker-compose down --volumes
docker-compose ps #查看当前正在运行的内容

docker-compose run命令允许您为您的服务运行一次性命令。例如,要查看web服务可用的环境变量 :

 docker-compose run web env

你可能感兴趣的:(dacker)