一、實驗環境
1、宿主機OS:Win10 64位
2 、虛擬機OS:Ubuntu18.04 64位 虛擬機名稱:Ubuntu18VM1 虛擬機IP:192.168.8.25
3、賬號:docker
二、簡要步驟
1.編寫一個dockerfile文件
2.編寫外部文件requirements.txt
3.編寫一個app.py文件
4.創建鏡像
5.查看鏡像
6.創建並運行容器
7.從瀏覽器里查看
三、詳細步驟
1、建立一個docker的工作文件夾dokerspace,進入這個文件夾,編寫dockerfile
$vi Dockerfile

文件Dockerfile內容:
FROM python:3.5
WORKDIR /app
ADD . /app
RUN pip install -r requirements.txt
EXPOSE 80
ENV NAME World
CMD ["python","app.py"]

2、編寫外部文件requirements.txt
Flask
Redis
3、編寫app.py,3、這里app.py是一個簡單的Python應用文件內容:
from flask import Flask
from redis import Redis,RedisError
import os
import socket
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 disababled</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、創建鏡像
$docker build -t hellodocker .
其中,docker build是構建鏡像的指令;-t參數指定了生成的鏡像的名稱為hellodocker;最后的點,表明是當前目錄。如果Dockerfile不在此目錄,則需要將點替換為
Dockerfile所在的目錄。
5、查看鏡像
$sudo docker ps
6、創建並啟動容器
$sudo docker run -d -p 5000:80 hellodocker

7、從宿主機瀏覽器里查看

至此,一個簡單的基於flask鏡像創建的容器已經運行。
四、遇到問題及處理
1、遇到問題:在試驗中,能創建鏡像,但無法創建並啟動容器。
經檢查,是app.py文件里存在bug。把此文件放到一個Python的環境里,排查問題,直到能正常解釋執行。修正本實驗中的app.py后,后續步驟正常進行。
