怒目的在CentOS系统中部署安装Docker-compose容器编排服务、使用Docker-compose服务构建Python Web镜像和容器。

1. 安装Docker-compose

(1)通过实训平台进入到操作系统界面,在#后输入yum -y install epel-release -y命令,然后按Enter键,安装epel-release源。示例代码如下:

[root@xxx ~]# yum install epel-release -y

在这里插入图片描述

(2)安装python-pip工具,在#后输入yum -y install python-pip -y命令,然后按Enter键,安装python-pip工具。示例代码如下:

[root@xxx~]# yum -y install python-pip -y

在这里插入图片描述

(3)使用pip工具安装doacker-compose,在#后输入sudo pip install -U docker-compose命令,然后按Enter建,安装docker-compose服务。示例代码如下所示:

[root@xxx~]#sudo pip install -U docker-compose

在这里插入图片描述

(4) 验证docker-compose服务是否可用,在#后输入sudo docker-compose --version命令,然后按Enter键,查看版本。示例代码如下:

[root@xxx~]# sudo docker-compose --version

在这里插入图片描述

2. 应用Compose的案例

(1)编写一个Python Web案例,应用Compose编排服务。例子包含2个容器,一个Python Web容器,一个是Redis数据库容器。

首先构建Python Web镜像和容器:在#后输入mkdir composeapp命令,然后按Enter键,创建composeapp目录,输入ll命令,查看所创建的目录。示例代码如下:

[root@xxx~]# mkdir composeapp

[root@xxx~]# ll

在这里插入图片描述

(2)在#后输入cd composeapp/命令,然后按Enter键,进入到该目录下,然后输入vi app.py,创建app.py文件,示例代码如下所示:

[root@xxx~]# cd composeapp/

[root@xxx composeapp]# vi app.py

编辑app.py文件,然后按i键,添加以下内容:

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('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)

编辑结束后,按ESC键进入末行模式,输入:wq命令,然后按Enter键,保存代码并退出。

(3)在#后输入vi requirements.txt命令,然后按Enter键,创建Python的依赖包描述文件。示例代码如下:

[root@xxxcomposeapp]# vi requirements.txt

编辑requirements.txt文件,然后按i键,添加以下内容:

flask
redis

编辑结束后,按ESC键进入末行模式,输入:wq命令,然后按Enter键,保存代码并退出。

(4)在#后输入vi Dockerfile命令,然后按Enter键,创建Dockerfile文件,示例代码如下:

[root@xxxcomposeapp]# vi Dockerfile

编辑Dockerfile文件,然后按i键,添加以下内容:

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

编辑结束后,按ESC键进入末行模式,输入:wq命令,然后按Enter键,保存代码并退出。

(5)在#后输入docker build -t jamtur01/composeapp .命令,然后按Enter键,构建镜像,示例代码如下:

[root@xxxcomposeapp]# docker build -t jamtur01/composeapp .

运行结果截图,如图6所示:
在这里插入图片描述

(6) 在#后输入docker pull redis命令,然后按Enter键,拉取redis镜像,示例代码如下:

[root@xxx composeapp]# docker pull redis

运行结果截图,如图7所示:
在这里插入图片描述

拉取镜像完毕后,运行该镜像,实例代码如下:

[root@xxxcomposeapp]# docker run -d -p 6379:6379 --name redis redis

运行结果截图,如图8所示:
在这里插入图片描述

(7)在#后输入sudo docker run -d -p 5000:5000 -v /root/composeapp:/composeapp --link redis:redis jamtur01/composeapp python app.py命令,然后按Enter键,运行镜像,示例代码如下:

[root@xxx composeapp]# sudo docker run -d -p 5000:5000 -v /root/composeapp:/composeapp --link redis:redis jamtur01/composeapp python app.py

注:若端口号被占用,请使用新端口号。

运行结果截图,如图9所示:
在这里插入图片描述

运行成功后,在#后输入curl 10.24.2.29:5000(ip为你当前虚拟机的ip,可以使用ip a命令查询ip地址),然后按Enter键,示例代码如下:

[root@xxx composeapp]# curl 10.24.2.29:5000

运行结果截图,如图10所示:
在这里插入图片描述

(8)在#后输入vi docker-compose.yml命令,然后按Enter键,创建docker-compose.yml文件,示例代码如下:

[root@xxx composeapp]# vi docker-compose.yml

编辑docker-compose.yml文件,然后按i键,添加以下内容:

web:
  image: jamtur01/composeapp
  command: python app.py
  ports:
   - "5001:5000"
  volumes:
   - .:/composeapp
  links:
   - redis
redis:
  image: redis

编辑结束后,按ESC键进入末行模式,输入:wq命令,然后按Enter键,保存代码并退出。

在#后输入docker-compose up &命令,然后按Enter键,以compose方式运行(加&的意思是后台运行),示例代码如下:

[root@xxx composeapp]# docker-compose up &

运行结果截图,如图11所示:
在这里插入图片描述

看到如上返回,则视为成功。

(9)在执行完docker-compose up &后,按Enter键,回到命令行模式,如图12所示:
在这里插入图片描述

在#后面输入curl 10.24.2.29:5001(ip为你当前虚拟机的ip,可以使用ip a命令查询ip地址),然后按Enter键,查看页面信息,示例代码如下:

[root@xxx composeapp]# curl 10.24.2.29:5001

运行结果截图,如图13所示:
在这里插入图片描述
由上图返回结果可以看出,单独启动容器和使用compose服务启动容器的效果一致。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐