首先创建一个文件夹
mkdir mydocker
在文件夹里面开始制作镜像
1、创建Dockerfile,编辑里面的内容
vim Dockerfile
内容:
FROM python:2.7-slim #来自于哪个镜像
WORKDIR /app #工作目录
ADD . /app 把当前目录复制到工作目录
RUN pip install --trusted-host pypi.python.org -r requirements.txt
EXPOSE 80
ENV NAME World
ENV AUTHOR xulun
CMD ["python","app.py"]
2、编辑requirements.txt文件
[root@docker-server mydocker]# vim requirements.txt
Flask
Redis
3、编辑app.py文件,我们的程序文件
[root@sc-docker-server mydocker]# vim app.py
from flask import Flask
from redis import Redis, RedisError
import os
import socket
# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)
app = Flask(__name__)
@app.route("/")
def hello():
try:
visits = redis.incr("counter")
except RedisError:
visits = "<i>cannot connect to Redis, counter disabled</i>"
html = "<h3>Hello {name}!</h3>" \
"<b>Hostname:</b> {hostname}<br/>" \
"<b>Visits:</b> {visits}"
return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80)
4、编辑app.py文件,我们的程序文件
[root@sc-docker-server mydocker]# vim app.py
from flask import Flask
from redis import Redis, RedisError
import os
import socket
# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)
app = Flask(__name__)
@app.route("/")
def hello():
try:
visits = redis.incr("counter")
except RedisError:
visits = "<i>cannot connect to Redis, counter disabled</i>"
html = "<h3>Hello {name}!</h3>" \
"<b>Hostname:</b> {hostname}<br/>" \
"<b>Visits:</b> {visits}"
return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80)
5、使用镜像,启动容器
docker run -d -p 5080:80 --name sc-hello-1 sc_friendlyhello_1
6、访问容器的web服务
curl或者chrome浏览器访问
宿主机ip:5080
Hello World!
Hostname: f4aeb5d5305a
Visits: cannot connect to Redis, counter disabled
连接失败因为redis数据库容器没有启动,flask web服务不能连接到redis数据库
7、 启动redis容器
docker run -d -p 6379:6379 --name sc-redis-1 redis
8、 再次启动一个自己制作镜像的容器,链接到redis容器
docker run -d --name sc-hello-2 -p 5081:80 --link sc-redis-1:redis sc_friendlyhello_1
9、访问容器的web服务
curl或者chrome浏览器访问
宿主机ip:5081
Hello World!
Hostname: aad7da1892b5
Visits: 15