(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
(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 < [email protected] >
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) 在#后输入docker pull redis命令,然后按Enter键,拉取redis镜像,示例代码如下:
[root@xxx composeapp]# docker pull redis
拉取镜像完毕后,运行该镜像,实例代码如下:
[root@xxxcomposeapp]# docker run -d -p 6379:6379 --name redis redis
(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
注:若端口号被占用,请使用新端口号。
运行成功后,在#后输入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 &
看到如上返回,则视为成功。
(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服务启动容器的效果一致。