在VS?Code中使用Docker容器的具體方法
0 序言
本文將系統(tǒng)介紹在VS Code中使用Docker的相關(guān)知識,涵蓋基礎(chǔ)概念、環(huán)境配置、核心操作及高級應(yīng)用。通過學(xué)習(xí),你將理解為何在VS Code中集成Docker能提升開發(fā)效率,掌握Docker鏡像、容器的基本概念,以及在VS Code中構(gòu)建、運行、調(diào)試容器的具體方法,利用VS Code與Docker協(xié)同進行項目開發(fā)。
1 Docker與VS Code集成基礎(chǔ)
在開發(fā)過程中,不同項目可能依賴不同的環(huán)境(如Python版本、數(shù)據(jù)庫配置等),手動配置容易出現(xiàn)環(huán)境不一致問題。Docker通過容器化技術(shù)實現(xiàn)環(huán)境隔離,而VS Code提供了對Docker的深度支持,可在同一界面完成鏡像構(gòu)建、容器管理、代碼調(diào)試等操作,減少工具切換成本,提升開發(fā)效率。
1.1 Docker核心概念
1.1.1 鏡像(Image)
Docker鏡像是一個包含代碼、運行時、庫、環(huán)境變量和配置文件的只讀模板,是創(chuàng)建容器的基礎(chǔ)。例如,一個Python鏡像可能包含Python解釋器、必要的依賴庫等。
1.1.2 容器(Container)
容器是鏡像的運行實例,是一個獨立的可執(zhí)行單元。鏡像相當(dāng)于類,容器相當(dāng)于對象,一個鏡像可創(chuàng)建多個容器,容器間相互隔離。
1.1.3 Dockerfile
Dockerfile是一個文本文件,包含一系列指令,用于構(gòu)建Docker鏡像。通過Dockerfile,開發(fā)者可定義鏡像的基礎(chǔ)環(huán)境、安裝依賴、配置程序等,實現(xiàn)鏡像的可重復(fù)構(gòu)建。
1.1.4 Docker Compose
Docker Compose是用于定義和運行多容器Docker應(yīng)用的工具,通過yaml文件配置應(yīng)用的服務(wù),可一鍵啟動、停止所有服務(wù),適合多組件協(xié)同的項目(如前端+后端+數(shù)據(jù)庫)。
總結(jié)就是,如果用面包這個例子來做一個類比的話,就是Dockerfile相當(dāng)于面包磨具的圖紙,Image相當(dāng)于制作面包的磨具,Container相當(dāng)于制作出來的面包,Docker Compose相當(dāng)于面包店的套餐組合單。
2 環(huán)境準備
2.1 安裝Docker
2.1.1 Windows系統(tǒng)
在這里還需要考慮一件事,就是原先電腦里是否有虛擬機,如果沒有用過虛擬機,那就直接按照以下步驟即可。
但如果之前有在電腦創(chuàng)建過虛擬機并且運行了,有一定的數(shù)據(jù)儲存情況下,我們得先確保要不要接著保留虛擬機,比如VirualBox等這些。
因為docker跟如VirualBox此類虛擬機還是存在一定的沖突風(fēng)險的,所以如果后續(xù)還想接著使用虛擬機,最好還是先請確認一下,尤其是windows系統(tǒng)。
這里有個方法,可以實現(xiàn)在Windows系統(tǒng)中 Docker Desktop 和 VirtualBox 虛擬機共存,避免兩者因虛擬化技術(shù)沖突而無法同時使用,可參考以下方法:
確認當(dāng)前系統(tǒng)環(huán)境,通過在命令提示符中執(zhí)行 wsl -l -v 命令,查看 Windows Subsystem for Linux(WSL)的安裝和版本情況。

若輸出結(jié)果中顯示已安裝的 Linux 發(fā)行版(如 Ubuntu)及其對應(yīng)的 WSL 版本為 2,且狀態(tài)為 Stopped 或 Running,則說明 WSL 2 環(huán)境已準備就緒。如果沒有安裝 WSL 2 或者沒有對應(yīng)的 Linux 發(fā)行版,需要先進行安裝和配置。
此外就是要想使用docker的桌面版本,你得Windows系統(tǒng)版本號需要1904以上?。。?/p>

- 檢查系統(tǒng)要求:需Windows 10 64位專業(yè)版、企業(yè)版或教育版(支持Hyper-V),或Windows 11。
- 下載Docker Desktop:訪問Docker官網(wǎng),下載對應(yīng)版本并安裝。
- 驗證安裝:打開命令提示符,輸入
docker --version,若顯示版本信息則安裝成功。
打開Docker官網(wǎng),點擊下載,

只要你的電腦是 x86 架構(gòu) 64 位處理器,一般都是選擇AMD64版本。

下載完后雙擊打開該exe文件,

選擇以上兩個選項,點擊下一步。

等待加載。

點 Close and log out 注銷 - 重新登錄 - 啟動 Docker 繼續(xù)配置,注銷只是短暫退出登錄,不會丟文件。

在彈出該頁面的地方選擇Accept

單純想先用 Docker 跑公開鏡像、本地容器,不用登錄,直接跳過即可。
如果你想用私有鏡像、Docker Hub 遠程操作,或是已經(jīng)有賬號,就直接sign in即可。

正常填寫即可,也可以選擇跳過,不影響后續(xù)操作。

接下來需要完成 WSL 2 集成配置,這樣 Docker 才能借助 WSL 2 跑容器。
點擊 Docker Desktop 右上角的 齒輪圖標(Settings,設(shè)置),進入配置界面。

按上圖要求完成配置。

Docker Desktop 已正常啟動并處于運行狀態(tài),但還需結(jié)合功能驗證來確認是否真的能正常工作。
win + r輸出cmd打開Windows 命令提示符,輸入docker ps并回車。

由于國內(nèi)的鏡像源拉取速度比較慢,很容易出現(xiàn)網(wǎng)絡(luò)超時這種情況,因此有必要用國內(nèi)的鏡像源來加快拉取速度。
粘貼以下程序:
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}

然后在下面這個地方修改一下鏡像存放的位置。
(也可以選擇不做更改,都可以,如果C盤空間足夠的話)

接著打開終端,驗證一下docker能夠正常拉取鏡像。

如果出現(xiàn)這個就說明成功拉取到了。
當(dāng)然,你也可以回到docker桌面端,在images中可以看到你拉取到的鏡像,點擊運行即可。

點運行后會彈出創(chuàng)建容器,根據(jù)自己需求填寫后點運行即可。

運行后就可以看到運行結(jié)果了。

2.2 配置VS Code
2.2.1 安裝Docker插件
- 打開VS Code,進入擴展面板(快捷鍵
Ctrl+Shift+X或Cmd+Shift+X)。 - 搜索“Docker”,選擇微軟官方的“Docker”插件(作者為Microsoft),點擊“安裝”。
- 安裝完成后,VS Code左側(cè)會出現(xiàn)Docker圖標,可通過該面板管理鏡像、容器等。

這里就看到VsCode已經(jīng)自動連接上docker了。

2.2.2 配置Docker連接(默認無需額外配置)
Docker插件默認會自動連接本地Docker服務(wù),若需連接遠程Docker服務(wù),可按以下步驟:
- 打開VS Code設(shè)置(
Ctrl+,或Cmd+,)。 - 搜索“docker.host”,設(shè)置遠程Docker服務(wù)地址(如
tcp://remote-host:2375)。 - 重啟VS Code使配置生效。
3 VS Code中使用Docker的核心操作
3.1 創(chuàng)建Dockerfile
3.1.1 新建Dockerfile
- 在VS Code中打開項目文件夾,右鍵新建文件,命名為
Dockerfile(無擴展名)。 - 輸入基礎(chǔ)指令:
在你新創(chuàng)建的Dockerfile里寫上以下程序。
# 基礎(chǔ)鏡像 FROM python:3.9-slim # 設(shè)置工作目錄 WORKDIR /app # 復(fù)制項目依賴文件 COPY requirements.txt . # 安裝依賴 RUN pip install --no-cache-dir -r requirements.txt # 復(fù)制項目代碼 COPY . . # 暴露端口(若項目有服務(wù)) EXPOSE 5000 # 啟動命令 CMD ["python", "app.py"]

在運行程序之前,需要確保你的項目目錄下需要有 requirements.txt 文件(用于記錄 Python 項目的依賴包),如果沒有實際依賴,可以創(chuàng)建一個空的 requirements.txt 文件,
項目目錄下還需要有 app.py 文件。
app.py文件程序內(nèi)容如下:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, Docker!'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)

3.1.2 Dockerfile指令說明
FROM:指定基礎(chǔ)鏡像,必須為Dockerfile的第一條指令。WORKDIR:設(shè)置后續(xù)指令的工作目錄。COPY:將本地文件復(fù)制到鏡像中。RUN:在鏡像構(gòu)建過程中執(zhí)行命令。EXPOSE:聲明容器運行時暴露的端口(僅為文檔說明,需配合-p參數(shù)映射)。CMD:指定容器啟動時執(zhí)行的命令(可被docker run后的命令覆蓋)。
3.2 構(gòu)建Docker鏡像
3.2.1 基于Dockerfile構(gòu)建
- 打開VS Code終端(
Ctrl+` 或Cmd+`)。 - 執(zhí)行構(gòu)建命令:
docker build -t my-python-app:1.0 .
-t:指定鏡像標簽(格式為名稱:版本)。.:表示Dockerfile所在的當(dāng)前目錄。
- 構(gòu)建完成后,可在VS Code的Docker面板
Images中看到新構(gòu)建的鏡像。

從docker的images就能看到新建好的鏡像了。

3.2.2 查看鏡像信息
在VS Code Docker面板中,右鍵鏡像選擇“Inspect”,可查看鏡像的詳細配置(如層信息、環(huán)境變量等);或在終端執(zhí)行:
docker images my-python-app:1.0

3.3 運行Docker容器
3.3.1 基礎(chǔ)運行命令
在終端執(zhí)行:
docker run -d -p 5000:5000 --name my-app-container my-python-app:1.0
-d:后臺運行容器。-p 5000:5000:將容器的5000端口映射到主機的5000端口(主機端口:容器端口)。--name:指定容器名稱。


3.3.2 在VS Code中管理容器
- 打開Docker面板,在
Containers中可看到運行中的容器。 - 右鍵容器可執(zhí)行“Start”“Stop”“Restart”“Delete”等操作。
- 選擇“Attach Shell”可進入容器內(nèi)部終端;選擇“View Logs”可查看容器運行日志。

3.4 調(diào)試容器內(nèi)的應(yīng)用
3.4.1 配置調(diào)試環(huán)境
- 在VS Code中創(chuàng)建.vscode/launch.json文件,添加Docker調(diào)試配置:
{
"version": "0.2.0", // 配置文件的版本,固定值
"configurations": [ // 調(diào)試配置列表(可以有多個配置)
{
"name": "Docker: Python - Launch", // 配置名稱(自己能認就行,比如“調(diào)試Docker里的Python”)
"type": "docker", // 調(diào)試類型:告訴VS Code這是Docker環(huán)境的調(diào)試
"request": "launch", // 調(diào)試方式:啟動新的容器并開始調(diào)試(另一種是“attach”,附加到已運行的容器)
"preLaunchTask": "docker-build", // 調(diào)試前自動執(zhí)行的任務(wù):這里是先構(gòu)建鏡像(確保代碼最新)
"python": { // Python相關(guān)的調(diào)試配置
"pathMappings": [ // 路徑映射:關(guān)鍵!讓VS Code知道本地代碼和容器內(nèi)代碼的對應(yīng)關(guān)系
{
"localRoot": "${workspaceFolder}", // 本地代碼路徑(你電腦上的項目文件夾)
"remoteRoot": "/app" // 容器內(nèi)代碼路徑(Dockerfile里WORKDIR設(shè)置的/app)
}
],
"projectType": "general" // 項目類型:通用Python項目(不用改)
}
}
]
}
這個 launch.json 配置是用于 在 VS Code 中直接調(diào)試 Docker 容器內(nèi)的 Python 代碼。
因為通過上文我們已經(jīng)通過 docker build 和 docker run 讓代碼在容器里跑起來了,但如果個問題:
如果代碼出了 bug,怎么像本地調(diào)試那樣一步步看哪里錯了?
直接在容器里打印日志太麻煩,而 VS Code 的調(diào)試功能(斷點、變量監(jiān)視)又默認只能用在本地環(huán)境。
這個 launch.json 就是讓 VS Code 和 Docker 容器打通,讓調(diào)試器能到容器內(nèi)部,直接調(diào)試里面運行的代碼。
- 創(chuàng)建.vscode/tasks.json文件,定義構(gòu)建任務(wù):
{
"version": "2.0.0", // 配置文件版本,固定值
"tasks": [
{
"label": "docker-build", // 任務(wù)名稱(必須和launch.json里的preLaunchTask一致)
"type": "docker-build", // 任務(wù)類型:Docker構(gòu)建(VS Code的Docker插件會識別)
"dockerBuild": {
"context": "${workspaceFolder}", // 構(gòu)建上下文:當(dāng)前項目文件夾(和手動構(gòu)建時的“.”作用一樣)
"tag": "my-python-app:1.0" // 鏡像標簽(和手動構(gòu)建的 -t 參數(shù)一樣)
}
}
]
}
這個 tasks.json 文件是為了在 VS Code 里更方便地管理 Docker 構(gòu)建任務(wù),讓你不用每次手動輸入 docker build 命令,同時和調(diào)試流程(launch.json 里的 preLaunchTask)聯(lián)動,
你之前手動構(gòu)建鏡像的命令是:
docker build -t my-python-app:1.0 .
而 tasks.json 的作用是把這個命令固化成 VS Code 的一個任務(wù),
以后就可以用快捷鍵自動執(zhí)行構(gòu)建。
3.4.2 啟動調(diào)試
- 可以在程序中設(shè)置斷點(點擊行號左側(cè))。
- 按
F5啟動調(diào)試,或者在左側(cè)選擇運行和調(diào)試,VS Code會自動構(gòu)建鏡像、運行容器并附加調(diào)試器,程序執(zhí)行到斷點時會暫停,可查看變量、調(diào)用棧等信息。


從日志看,鏡像構(gòu)建已經(jīng)成功完成。
構(gòu)建過程利用了 Docker 的緩存機制(CACHED 的步驟),加速了構(gòu)建流程(因為代碼 / 依賴沒變化,復(fù)用了之前的結(jié)果 )。
終端提示是正常的 VS Code 任務(wù)執(zhí)行收尾邏輯,按需按任意鍵關(guān)閉即可,不影響鏡像使用。
4 小結(jié)
本文很基礎(chǔ),介紹了在VS Code中使用Docker的全流程。首先明確了Docker與VS Code集成的價值——解決環(huán)境一致性問題并提升開發(fā)效率;接著講解了鏡像、容器等核心概念,以及Docker和VS Code的安裝配置;然后通過實例演示了Dockerfile編寫、鏡像構(gòu)建、容器運行及調(diào)試的具體操作。
掌握這些知識后,你可在VS Code中高效完成容器化開發(fā),無論是單服務(wù)應(yīng)用還是多組件協(xié)同項目(道理一樣),都能通過Docker實現(xiàn)環(huán)境隔離與快速部署,顯著提升開發(fā)體驗和項目可維護性。
到此這篇關(guān)于在VS Code中使用Docker容器的文章就介紹到這了,更多相關(guān)VS Code使用Docker容器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Dockerfile實現(xiàn)數(shù)據(jù)卷的掛載問題(推薦)
Dockerfile就是一個可以用來構(gòu)建鏡像的文件,可以理解為一個腳本文件,可以通過這個腳本文件自定義生成一個我們想要的鏡像,鏡像都是一層一層的,里面的每一條命令就是一層,本文給大家介紹使用Dockerfile實現(xiàn)數(shù)據(jù)卷的掛載,感興趣的朋友一起看看吧2022-03-03
IDEA使用Docker插件遠程部署項目到云服務(wù)器的方法步驟
這篇文章主要介紹了IDEA使用Docker插件遠程部署項目到云服務(wù)器的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
dockerfile部署前端vue打包的ist文件實戰(zhàn)
這篇文章主要為大家介紹了dockerfile部署前端vue打包的ist文件實戰(zhàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10
Docker創(chuàng)建openresty容器的實現(xiàn)步驟
OpenResty可以用來構(gòu)建高性能的Web應(yīng)用和服務(wù),本文主要介紹了Docker創(chuàng)建openresty容器的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-03-03
Linux下使用Docker部署MinIO存儲服務(wù)實現(xiàn)遠程上傳的方法
MinIO是一個開源的對象存儲服務(wù)器,可以在各種環(huán)境中運行,例如本地、Docker容器、Kubernetes集群等,本文主要是Linux下通過Docker部署MinIO存儲服務(wù)實現(xiàn)遠程上傳的文章,感興趣的朋友一起看看吧2023-11-11
docker /var/lib/docker/aufs/mnt 目錄清理方法
在本篇文章里小編給各位整理的是關(guān)于docker /var/lib/docker/aufs/mnt 目錄清理方法,有需要的朋友們可以參考下。2020-03-03

