Docker容器技术与应用(项目4 Docker集群)

本文介绍了Docker Compose作为容器编排工具的使用,包括Compose简介、安装步骤、实例应用展示,以及常用命令说明。通过Compose,可以方便地管理和运行多容器应用,如Python Web应用与Redis数据库的组合。此外,还提供了如何构建和运行Python Web服务容器以及连接Redis数据库的详细步骤。
摘要由CSDN通过智能技术生成

项目4 Docker集群

任务4.1 docker compose容器编排

4.1.1 Compose简介

Compose 定位是 “定义和运行多个 Docker 容器的应用(Defining and running multi-container Docker applications)”,其前身是开源项目 Fig,目前仍然兼容 Fig 格式的模板文件。

通过第一部分中的介绍,知道使用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。

Compose 恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

Compose 中有两个重要的概念:

(1).   服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。

(2).   项目(project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。

Compose 项目由 Python 编写,实现上调用了Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用Compose 来进行编排管理。

4.1.2 安装

Compose 目前支持 Linux 和 Mac OS 平台,两者的安装过程大同小异。

安装 Compose 之前,要先安装 Docker(需要 DockerEngine 1.7.1+),请参考第一部分中章节,在此不再赘述。

Compose 可以通过 Python 的 pip 工具进行安装,可以直接下载编译好的二进制文件使用,甚至直接运行在 Docker 容器中。

前两种方式是传统方式,适合本地环境下安装使用;最后一种方式则不破坏系统环境,更适合云计算场景。

(1).   安装DockerCompose(选择1.8.1版本的)

[root@client ~]# sudo bash -c "curl -Lhttps://github.com/docker/compose/releases/download/1.8.0/docker-compose-'uname-s'-'uname -m' >/usr/local/bin/docker-compose"

  %Total    % Received % Xferd  Average Speed   Time   Time     Time  Current

                                 Dload  Upload  Total   Spent    Left Speed

100 54877   0 54877    0     0  2798      0 --:--:--  0:00:19 --:--:--  2578

 

[root@client ~]# sudo chmod +x/usr/local/bin/docker-compose

 

[root@client /]# yum -y install python-pip

 

[root@client /]# sudo pip install -Udocker-compose

(2).   安装好以后更新一下pip工具

[root@client yum.repos.d]# pip install --upgradepip

Collecting pip

 Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)

    100% |████████████████████████████████| 1.3MB 28kB/s

Installing collected packages: pip

  Foundexisting installation: pip 8.1.2

   Uninstalling pip-8.1.2:

     Successfully uninstalled pip-8.1.2

Successfully installed pip-9.0.1

(3).   验证docker-compose是否可用(注意要yum clean all)

[root@client bin]# sudo docker-compose --version

docker-compose version 1.8.1, build 258538

4.1.3 实例应用

编写一个python web案例,应用compose编排服务。例子包含2个容器,一个python web容器,一个是Redis数据库容器。

首先构建python web镜像和容器:

(1).   创建composeapp目录

[root@client /]# mkdir composeapp

[root@client /]# cd composeapp/

[root@client composeapp]# touch Dockerfile

(2).   编写python程序

[root@client composeapp]# touch app.py

[root@client composeapp]# vi app.py

from flask import Flask

from redisimport Redis

import os

 

app = Flask(__name__)

redis = Redis(host="redis", port=6379)

 

@app.route('/')

def hello():

   redis.incr('hits')

    return'Hello Docker Book reader! I have been seen {0} times'.format(redis.get('hits'))

 

if __name__ == "__main__":

   app.run(host="0.0.0.0", debug=True)

(3).   创建python的依赖包描述文件

~ [root@client composeapp]# touchrequirements.txt

[root@client composeapp]# vi requirements.txt

flask

redis

(4).   编写python web容器的镜像Dockerfile文件

[root@client composeapp]# vi Dockerfile

FROM python:2.7

MAINTAINER James Turnbull<james@example.com>

ENV REFRESHED_AT 2016-08-01

 

ADD . /composeapp

 

WORKDIR /composeapp

 

RUN pip install -r requirements.txt

(5).   构建镜像

[root@client composeapp]# sudo docker build -tjamtur01/composeapp .

[root@client composeapp]# sudo docker build -tjamtur01/composeapp .

Sending build context to Docker daemon 4.096 kB

Step 1 : FROM python:2.7

Trying to pull repository192.168.200.11:5000/python ...

Pulling repository 192.168.200.11:5000/python

Error: image python not found

Trying to pull repositorydocker.io/library/python ...

2.7: Pu

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值