Docker 支持通過擴展現有鏡像,以及創建新的鏡像,
下面演示如何自制一個自己的鏡像,并且使用自制鏡像啟動容器的實驗,
目錄
第一步、編輯Dockerfile檔案
第2步、編輯requirements.txt檔案
第3步、編輯app.py檔案
第4步、生成鏡像檔案
第5步、使用鏡像,啟動容器
第6步、訪問容器的web服務
第7步、 啟動redis容器
第8步、 再次啟動一個自己制作鏡像的容器,鏈接到redis容器
第九步、訪問容器的web服務
第一步、編輯Dockerfile檔案
1、在/下創建一個目錄,再進入到該目錄:
mkdir /mydocker/
cd /mydocker/
2、創建Dockerfile檔案
vim Dockerfile
Dockerfile 檔案內容是:
# 使用python3.9版本
FROM python:3.9-slim
# /app檔案
WORKDIR /app
# 加載/app檔案內容
ADD . /app
RUN pip install --trusted-host pypi.python.org -r requirements.txt
# 80埠
EXPOSE 80
# 環境ENV的設定:NAME和AUTHOR可以自己設定
ENV NAME World
ENV AUTHOR xiayuzhen
# CMD用來執行檔案的
CMD ["python","app.py"]
第2步、編輯requirements.txt檔案
創建requirements.txt檔案,內容如下:
Flask
Redis
vim requirements.txt
第3步、編輯app.py檔案
app.py是程式檔案
vim app.py
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步、生成鏡像檔案
使用docker bulid -t 生成鏡像檔案,注意后面一定要使用 “ . ”,把當前目錄下的第三個檔案都加載進去,
1、查看當前目錄下,只有三個剛剛創建的檔案:
![]()
2、生成鏡像檔案
docker build -t xyz_friendlyhello_1 .

會自動從上往下一步一步的執行檔案,最后出現successfully就創建鏡像成功!
3、查看鏡像檔案
docker images

第5步、使用鏡像,啟動容器
生成一個使用自制鏡像的容器:
docker run -d -p 4080:80 --name xyz-hello--1 xyz_friendlyhello_1
第6步、訪問容器的web服務
使用curl或者chrome瀏覽器訪問;
主機ip:4080
因為redis資料庫容器沒有啟動,flask web服務不能連接到redis資料庫
(埠要接容器設定的埠號訪問)

第7步、 啟動redis容器
docker run -d -p 6379:6379 --name sc_redis_1 redis
查看啟動的容器:

第8步、 再次啟動一個自己制作鏡像的容器,鏈接到redis容器
docker run -d --name xyz-hello--2 -p 4081:80 --link sc_redis_1:redis xyz_friendlyhello_1
查看容器是否啟動,每一次啟動后的容器,都查看確保已經啟動,
第九步、訪問容器的web服務
使用重新啟動容器的埠訪問,鏈接redis后,可以顯示出訪問次數,
curl或者chrome瀏覽器訪問
宿主機ip:4081

總結:從鏡像的制作到代碼撰寫,啟動容器并且使用的實驗就完成啦,而且還鏈接到redis查看到訪問次數,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/294808.html
標籤:其他
