Docker 的打包及基本使用
Docker 的打包是將應用程序及其依賴項封裝到一個容器中,以便在任何支持 Docker 的環境中運行。
本教程將詳細介紹如何通過 Dockerfile 打包應用程序,並基本使用 Docker 容器。
Docker 打包
創建 Dockerfile
Dockerfile 是一個文本文件,包含了一系列指令,用於自動化構建 Docker 鏡像。
以下是一個典型的 Dockerfile 示例:
# 使用 Python 3.9 作為基礎鏡像
FROM python:3.9-slim
# 設置工作目錄
WORKDIR /app
# 複製依賴文件
COPY requirements.txt .
# 安裝依賴
RUN pip install --no-cache-dir -r requirements.txt
# 複製應用程序代碼
COPY . .
# 暴露端口
EXPOSE 8000
# 設置啓動命令
CMD ["python3", "app.py"]
關鍵指令説明:
FROM:指定基礎鏡像。ENV:設置環境變量。RUN:執行命令(例如安裝依賴)。WORKDIR:設置工作目錄。COPY:將文件從主機複製到容器中。EXPOSE:暴露容器端口。CMD:設置容器啓動時執行的命令。
構建 Docker 鏡像
在 Dockerfile 所在目錄下創建requirements.txt和app.py:
app.py內容如下:
from flask import Flask
# 創建 Flask 應用
app = Flask(__name__)
# 定義路由
@app.route('/')
def hello():
return "Hello, Docker!"
# 啓動應用
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8000)
requirements.txt 內容如下:
Flask==2.3.2
並運行以下命令構建鏡像
docker build -t my-app .
-t my-app:為鏡像指定一個名稱(標籤)。.:指定 Dockerfile 所在的目錄(當前目錄)。
驗證鏡像
構建完成後,可以通過以下命令查看本地鏡像:
docker images
如果看到 my-app 鏡像,説明構建成功。
Docker 基本使用
運行容器
使用構建的鏡像運行容器:
docker run -d -p 8000:8000 --name my-app-container my-app
-d:以守護進程模式運行容器。-p 8000:8000:將主機的 8000 端口映射到容器的 8000 端口。--name my-app-container:為容器指定一個名稱。my-app:使用的鏡像名稱。
查看容器日誌
查看容器的日誌輸出:
docker logs my-app-container
進入容器
如果需要進入容器進行調試,可以使用以下命令:
docker exec -it my-app-container /bin/bash
停止和刪除容器
停止容器:
docker stop my-app-container
刪除容器:
docker rm my-app-container