
下載Docker Desktop並安裝
我們可以從官方網站先下載 Docker Desktop。
如果你是 windows電腦,可以選擇 Windows-AMD64的選項,並把它安裝起來。
Docker的基本組成
在佈署 docker之前,有幾個需要花點時間理解幾個基本的物件:
Image (映像檔)
image 是一個包含應用程式及其所有依賴的靜態文件系統模板,這是 Docker 容器的基礎。
可以從 Docker Hub 等公共儲存庫拉取映像檔,或根據需要創建自定義的映像檔。
從 Docker Hub 拉取現成的 Image: pull image,假設想要拉取 python 的官方映像檔:
docker pull python:3.9
檢查本機所有已下載的Docker image
docker images
Container (容器)
容器是運行中的映像檔(image)實例,當你從 Image 創建容器並啟動它時,容器會成為一個可運行的環境。
運行容器:當你拉取了一個映像檔(例如 python:3.9),你可以使用以下命令來運行容器:
docker run -it --name my-python-container python:3.9
這將創建並啟動名為 my-python-container 的容器,並進入交互式的 shell。
啟動一個後台運行的容器:如果你希望容器在後台運行而不進入交互模式,使用 -d 參數:
docker run -d --name my-python-container python:3.9
查看所有正在運行的容器:使用 docker ps 查看所有運行中的容器:
docker ps
停止容器:如果容器正在運行,你可以使用 docker stop 停止容器:
docker stop my-python-container
刪除容器:停止容器後,你可以刪除它:
docker rm my-python-container
進入容器 : 如果你希望進入已經運行的容器,可以使用 docker exec:
docker exec -it my-python-container /bin/bash
Volumes (資料卷)
volumes 是用來持久化和共享資料用的,它可以將容器中的資料保存到本機,這樣容器重啟或刪除時資料不會丟失。
一般來說容器內的資料存儲通常是臨時的,使用 Volume 可以實現資料的持久性。
創建 Volume:
docker volume create my-volume
掛載 Volume 到容器:當運行容器時,你可以使用 v 參數將本機資料夾或 Volume 掛載到容器中:
docker run -d -v my-volume:/app/data --name my-python-container python:3.9
這會將容器內的 /app/data 目錄掛載到名為 my-volume 的 Volume。
查看 Volume:查看所有的 Volumes:
docker volume ls
刪除 Volume:如果不再需要某個 Volume,你可以使用以下命令刪除它:
docker volume rm my-volume
使用本機資料夾作為 Volume :
還可以將本機資料夾掛載為 Volume,例如將本機的 C:/data 資料夾掛載到容器內的 /app/data:
docker run -d -v C:/data:/app/data --name my-python-container python:3.9
這樣,本機的 C:/data 資料夾會與容器內的 /app/data 目錄進行同步。
在Visiual Studio Code上使用Docker進行Python的環境開發
使用Python Container需要進行安裝的程式:
我們在進行佈署之前,我們會需要同時安裝好一些程式:
- Visiual Studio Code(VSCode)
- Docker Desktop
- VSCode 還有在延伸模組(Extensions)的地方,搜尋並安裝
Python、Docker、Dev Containers
1. 在Docker上拉取Python官方映像檔
拉取(Pull)Image
docker pull python:3.9
啟動 Container
- 使用 image 啟動一個 container:
docker run -it --name my-python-env python:3.9
- it:讓你能進入 container 互動。
- -name:給 container 取個名字(像「my-python-env」)。
進入 container 後,你就可以像在自己電腦上使用 Python!
2. 建立 .devcontainer 資料夾中建立 devcontainer.json
假設你現在的專案資料夾是(C:/docker-python-test),我們建立一個名為 .devcontainer 的資料夾,並在其中創建一個 devcontainer.json 配置檔。
這樣 VSCode 就會知道如何設定和連接 Docker 容器。
步驟如下:
- 開啟你的專案資料夾:
- 假設你的專案資料夾在
C:/docker-python-test,你可以直接在檔案總管中打開這個資料夾。
- 假設你的專案資料夾在
- 創建
.devcontainer資料夾:- 在
C:/docker-python-test資料夾中,右鍵點擊,選擇新建資料夾,並將其命名為.devcontainer。
- 在
- 創建
devcontainer.json檔案:- 進入
.devcontainer資料夾後,右鍵點擊選擇新建文字檔案。 - 將新建的文字檔案命名為
devcontainer.json,注意要把副檔名改為.json,而不是.txt。
- 進入
- 編輯
devcontainer.json:- 使用任意文字編輯器(例如 VSCode、Notepad++)打開
devcontainer.json檔案,並寫入以下內容:
- 使用任意文字編輯器(例如 VSCode、Notepad++)打開
{
"name": "Python Dev Environment",
"build": {
"dockerfile": "../Dockerfile",
"context": ".."
},
"settings": {
"python.defaultInterpreterPath": "/usr/local/bin/python"
},
"extensions": [
"ms-python.python",
"ms-azuretools.vscode-docker",
"ms-vscode-remote.remote-containers"
],
"workspaceFolder": "/app",
"postCreateCommand": "pip install -r requirements.txt",
"forwardPorts": [8888]
}
- 內容說明:
"dockerFile": "../Dockerfile":這表示devcontainer.json會使用上層目錄中的Dockerfile。"context": "..":這指定容器的上下文目錄,即容器將使用父目錄中的檔案。"appPort": [8888]:這將開放端口 8888,以便你可以從瀏覽器訪問 Jupyter。"postCreateCommand":在容器創建後安裝必要的 Python 依賴。
- 檢查資料夾結構: 最終你的專案資料夾結構應該像這樣:
C:/docker-python-test
├── .devcontainer
│ └── devcontainer.json
├── Dockerfile
├── requirements.txt
└── test.py
3. Dockerfile
Dockerfile 是用來定義如何構建 Docker 映像檔的文件。
它包含一系列指令,每個指令告訴 Docker 如何設置映像檔環境,例如基礎映像、需要的依賴、工作目錄等。
以下是範例 Dockerfile,用於構建一個 Python 開發環境:
# 使用 Python 3.9 作為基礎映像
FROM python:3.9
# 設置工作目錄(容器中的目錄)
WORKDIR /app
# 複製 requirements.txt 進入容器
COPY requirements.txt /app/
# 安裝所有依賴項
RUN pip install --no-cache-dir -r requirements.txt
# 複製本機目錄下所有檔案到容器的 /app
COPY . /app
# 設定容器啟動後執行的命令
CMD ["python"]
4. requirements.txt
requirements.txt 是 Python 的依賴包清單文件,用於記錄你程式中需要的所有第三方庫。Docker 可以根據它來自動安裝這些依賴。
範例:requirements.txt 的內容
假設你需要使用 NumPy 和 Pandas,requirements.txt 可以這樣寫:
numpy==1.23.5
pandas==1.5.3
jupyter==1.0.0
5. 配置 VSCode 使用 Docker 容器中的 Python
5-1:打開 VSCode 專案
確保你已經打開專案的根目錄(如 C:/docker-python-test)。
5-2:啟用 Remote – Containers
- 點擊左下角綠色圖示(Remote Explorer)。
- 選擇
Reopen in Container。 - 容器會根據
devcontainer.json自動構建並啟動。
5-3:設定 Python 解釋器
- 點擊 VSCode 右下角的 Python 解釋器選擇器。
- 確保選擇的是容器中的 Python,例如
/usr/local/bin/python。
5-4:運行 Python 腳本
- 方法 1:終端運行
- 打開 VSCode 的整合終端,執行:
python test.py
- 方法 2:使用 VSCode Debugger
- 建立 launch.json 並設定:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
}
]
}
5-5:測試成功後確認同步
確認 /app 資料夾與本機資料夾同步,確保你修改的程式會即時更新到容器內。
討論
以上是我自己在嘗試進行docker+VS Code的環境開發與佈署方式,另外其他的資源可以參考
