Docker 编排工具Compose

作者: _简_述_ | 来源:发表于2017-04-26 20:57 被阅读221次

Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景。

1.安装Compose:

这里简单介绍下两种安装docker-compose的方式

方法一:
curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname -s`-`uname -m` > /usr/bin/docker-compose 
chmod +x/usr/bin/docker-compose
#查看版本信息
docker-compose --version

方法二:

#安装python-pip
yum -y install epel-release
yum -y install python-pip

#安装docker-compose
pip install docker-compose

#执行查询版本的命令
docker-compose version

2.创建配置文件

  • 创建目录
#创建测试目录
mkdir composetest
cd composetest
  • 创建app.py 文件
#app.py

from flask import Flask
from redis import Redis
import os
app = Flask(__name__)
redis = Redis(host='redis', port=6379)
@app.route('/')
def hello():
    redis.incr('test')
    return 'Hello World! I have been seen %s times.' % redis.get('test')

if __name__ == '__main__':
    app.run(host="0.0.0.0", debug=True)
  • 创建requirements.txt文件
flask
redis
  • 创建Dockerfile文件
#Dockerfile
FROM python:2.7
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
  • 创建docker-compose.yml文件
web:
    build: .
    command: python app.py
    ports:
        - "5000:5000"
    volumes:
        - .:/code
    links:
        - redis
redis:
    image: redis
文件树

3.编排部署

docker-compose up
终端显示截图 浏览器显示截图

踩坑排雷

#遇到app.py文件无法访问
python: can't open file 'app.py': [Errno 13] Permission denied

#解决方案:临时关闭selinux
setenforce 0

扩展知识

  • Yaml文件参考

在上面的yaml文件中,我们可以看到compose文件的基本结构。首先是定义一个服务名,下面是yaml服务中的一些选项条目:

image :镜像的ID

build :直接从pwd的Dockerfile来build,而非通过image选项来pull

links :连接到那些容器。每个占一行,格式为SERVICE[:ALIAS],例如 – db[:database]

external_links :连接到该compose.yaml文件之外的容器中,比如是提供共享或者通用服务的容器服务。格式同links

command :替换默认的command命令

ports : 导出端口。格式可以是:

ports:-"3000"-"8000:8000"-"127.0.0.1:8001:8001"
expose :导出端口,但不映射到宿主机的端口上。它仅对links的容器开放。格式直接指定端口号即可。

volumes :加载路径作为卷,可以指定只读模式:

volumes:-/var/lib/mysql
 - cache/:/tmp/cache
 -~/configs:/etc/configs/:ro
volumes_from :加载其他容器或者服务的所有卷

environment:- RACK_ENV=development
  - SESSION_SECRET
env_file :从一个文件中导入环境变量,文件的格式为RACK_ENV=development

extends :扩展另一个服务,可以覆盖其中的一些选项。一个sample如下:

common.yml
webapp:
  build:./webapp
  environment:- DEBUG=false- SEND_EMAILS=false
development.yml
web:extends:
    file: common.yml
    service: webapp
  ports:-"8000:8000"
  links:- db
  environment:- DEBUG=true
db:
  image: postgres
net :容器的网络模式,可以为”bridge”, “none”, “container:[name or id]”, “host”中的一个。

dns :可以设置一个或多个自定义的DNS地址。

dns_search :可以设置一个或多个DNS的扫描域。

其他的 working_dir, entrypoint, user, hostname, domainname, mem_limit, privileged, restart, stdin_open, tty, cpu_shares ,和 docker run 命令是一样的,这些命令都是单行的命令。例如:

cpu_shares:73
working_dir:/code
entrypoint: /code/entrypoint.sh
user: postgresql
hostname: foo
domainname: foo.com
mem_limit:1000000000
privileged:true
restart: always
stdin_open:true
tty:true
  • docker-compose常用命令
在第二节中的 docker-compose up ,这两个容器都是在前台运行的。我们可以指定-d命令以daemon的方式启动容器。除此之外,docker-compose还支持下面参数:

--verbose :输出详细信息

-f 制定一个非docker-compose.yml命名的yaml文件

-p 设置一个项目名称(默认是directory名)

docker-compose的动作包括:

build :构建服务

kill -s SIGINT :给服务发送特定的信号。

logs :输出日志

port :输出绑定的端口

ps :输出运行的容器

pull :pull服务的image

rm :删除停止的容器

run : 运行某个服务,例如docker-compose run web python manage.py shell

start :运行某个服务中存在的容器。

stop :停止某个服务中存在的容器。

up :create + run + attach容器到服务。

scale :设置服务运行的容器数量。例如:docker-compose scale web=2 worker=3

相关文章

  • Docker compose(五)

    Docker compose Docker compose是一种docker容器的任务编排工具官方地址:https...

  • 4.k8s

    k8s是docker的编排工具。其实docker也有编排工具,比如docker_compose和swarm。学会了...

  • docker-compose

    docker-compose能干啥 docker-compose 是 docker 官方提供的容器编排工具,可以实...

  • docker-compose搭建php开发环境

    什么是编排呢?编排指的是同时管理多个容器的行为。docker-compose 是docker开源的单机容器编排工具...

  • docker-compse简单使用介绍

    docker-compose是docker 的编排工具Compose 文件是一个YAML文件,用于定义servic...

  • Docker三剑客简介

    compose、machine 和 swarm 是docker 原生提供的三大编排工具。 Compose 1. 概...

  • docker 系列:实践工具

    前言 本文将介绍 Docker 的相关工具使用经验,比如 Docker-compose:容器编排工具;Portai...

  • Docker 编排工具Compose

    Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过一个配置文...

  • 空尘AI简书目录

    docker容器及docker-compose编排工具 centos7上rpm离线安装docker18centos...

  • 03-DAFramework项目环境搭建

    DAFramework采用docker作为开发环境,采用docker-compose作为服务编排工具,采用grad...

网友评论

    本文标题:Docker 编排工具Compose

    本文链接:https://www.haomeiwen.com/subject/sbewzttx.html