1 Docker 与 VS Code 集成基础
在开发过程中,不同项目可能依赖不同的环境(如 Python 版本、数据库配置等),手动配置容易出现环境不一致问题。Docker 通过容器化技术实现环境隔离,而 VS Code 提供了对 Docker 的深度支持,可在同一界面完成镜像构建、容器管理、代码调试等操作,减少工具切换成本,提升开发效率。
Docker 通过容器化技术实现环境隔离,VS Code 提供深度支持可提升开发效率。本文涵盖 Docker 核心概念(镜像、容器、Dockerfile、Compose),Windows 下 Docker Desktop 安装及 WSL2 配置,VS Code Docker 插件使用,以及基于 Python Flask 项目的镜像构建、容器运行与调试全流程操作。

在开发过程中,不同项目可能依赖不同的环境(如 Python 版本、数据库配置等),手动配置容易出现环境不一致问题。Docker 通过容器化技术实现环境隔离,而 VS Code 提供了对 Docker 的深度支持,可在同一界面完成镜像构建、容器管理、代码调试等操作,减少工具切换成本,提升开发效率。
Docker 镜像是一个包含代码、运行时、库、环境变量和配置文件的只读模板,是创建容器的基础。例如,一个 Python 镜像可能包含 Python 解释器、必要的依赖库等。
容器是镜像的运行实例,是一个独立的可执行单元。镜像相当于类,容器相当于对象,一个镜像可创建多个容器,容器间相互隔离。
Dockerfile 是一个文本文件,包含一系列指令,用于构建 Docker 镜像。通过 Dockerfile,开发者可定义镜像的基础环境、安装依赖、配置程序等,实现镜像的可重复构建。
Docker Compose 是用于定义和运行多容器 Docker 应用的工具,通过 yaml 文件配置应用的服务,可一键启动、停止所有服务,适合多组件协同的项目(如前端 + 后端 + 数据库)。
若用面包做类比:Dockerfile 相当于面包模具的图纸,Image 相当于制作面包的模具,Container 相当于制作出来的面包,Docker Compose 相当于面包店的套餐组合单。
若已安装 VirtualBox 等虚拟机,需注意 Docker 与其虚拟化技术的潜在冲突。可通过 WSL 2 实现共存。
确认当前系统环境,通过在命令提示符中执行 wsl -l -v 命令,查看 Windows Subsystem for Linux(WSL)的安装和版本情况。
若输出结果中显示已安装的 Linux 发行版及其对应的 WSL 版本为 2,且状态为 Stopped 或 Running,则说明 WSL 2 环境已准备就绪。如果没有安装 WSL 2 或者没有对应的 Linux 发行版,需要先进行安装和配置。
使用 Docker Desktop 需 Windows 系统版本号 1904 以上。
docker --version,若显示版本信息则安装成功。选择 AMD64 版本(x86 架构 64 位处理器)。下载完成后双击 exe 文件,在安装向导中选择相关选项,点击下一步。
等待加载完成后,注销并重新登录电脑,启动 Docker 继续配置。
在弹出页面选择 Accept。单纯想先用 Docker 跑公开镜像、本地容器,不用登录,直接跳过即可。如果想用私有镜像、Docker Hub 远程操作,或是已经有账号,就直接 Sign In。
接下来需要完成 WSL 2 集成配置,这样 Docker 才能借助 WSL 2 跑容器。点击 Docker Desktop 右上角的齿轮图标(Settings,设置),进入配置界面,按相关要求完成配置。
Docker Desktop 正常启动后,结合功能验证来确认是否真的能正常工作。打开 Windows 命令提示符,输入 docker ps 并回车。
由于国内镜像源拉取速度较慢,建议配置国内镜像源以加快拉取速度。修改 Docker 配置文件如下:
{
"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 能够正常拉取镜像。
Ctrl+Shift+X 或 Cmd+Shift+X)。此时 VS Code 应已自动连接上 Docker。
Docker 插件默认会自动连接本地 Docker 服务,若需连接远程 Docker 服务,可按以下步骤:
Ctrl+, 或 Cmd+,)。tcp://remote-host:2375)。Dockerfile(无扩展名)。# 基础镜像
FROM python:3.9-slim
# 设置工作目录
WORKDIR /app
# 复制项目依赖文件
COPY requirements.txt .
# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt
# 复制项目代码
COPY . .
# 暴露端口(若项目有服务)
EXPOSE 5000
# 启动命令
CMD ["python", "app.py"]
在运行程序之前,需要确保你的项目目录下需要有 requirements.txt 文件(用于记录 Python 项目的依赖包),如果没有实际依赖,可以创建一个空的 requirements.txt 文件。项目目录下还需要有 app.py 文件。
app.py 文件内容如下:
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)
FROM:指定基础镜像,必须为 Dockerfile 的第一条指令。WORKDIR:设置后续指令的工作目录。COPY:将本地文件复制到镜像中。RUN:在镜像构建过程中执行命令。EXPOSE:声明容器运行时暴露的端口(仅为文档说明,需配合 -p 参数映射)。CMD:指定容器启动时执行的命令(可被 docker run 后的命令覆盖)。Ctrl+\`` 或 Cmd+``)。docker build -t my-python-app:1.0 .
-t:指定镜像标签(格式为 名称:版本)。.:表示 Dockerfile 所在的当前目录。构建完成后,可在 VS Code 的 Docker 面板 Images 中看到新构建的镜像。
在 VS Code Docker 面板中,右键镜像选择'Inspect',可查看镜像的详细配置(如层信息、环境变量等);或在终端执行:
docker images my-python-app:1.0
在终端执行:
docker run -d -p 5000:5000 --name my-app-container my-python-app:1.0
-d:后台运行容器。-p 5000:5000:将容器的 5000 端口映射到主机的 5000 端口(主机端口:容器端口)。--name:指定容器名称。.vscode/launch.json 文件,添加 Docker 调试配置:{
"version": "0.2.0",
"configurations": [
{
"name": "Docker: Python - Launch",
"type": "docker",
"request": "launch",
"preLaunchTask": "docker-build",
"python": {
"pathMappings": [
{
"localRoot": "${workspaceFolder}",
"remoteRoot": "/app"
}
],
"projectType": "general"
}
}
]
}
此配置用于在 VS Code 中直接调试 Docker 容器内的 Python 代码。通过路径映射,让 VS Code 知道本地代码和容器内代码的对应关系。
.vscode/tasks.json 文件,定义构建任务:{
"version": "2.0.0",
"tasks": [
{
"label": "docker-build",
"type": "docker-build",
"dockerBuild": {
"context": "${workspaceFolder}",
"tag": "my-python-app:1.0"
}
}
]
}
此文件将 Docker 构建命令固化成 VS Code 的一个任务,方便与调试流程联动。
F5 启动调试,或者在左侧选择'运行和调试',VS Code 会自动构建镜像、运行容器并附加调试器,程序执行到断点时会暂停,可查看变量、调用栈等信息。本文介绍了在 VS Code 中使用 Docker 的全流程。首先明确了 Docker 与 VS Code 集成的价值——解决环境一致性问题并提升开发效率;接着讲解了镜像、容器等核心概念,以及 Docker 和 VS Code 的安装配置;然后通过实例演示了 Dockerfile 编写、镜像构建、容器运行及调试的具体操作。
掌握这些知识后,可在 VS Code 中高效完成容器化开发,无论是单服务应用还是多组件协同项目,都能通过 Docker 实现环境隔离与快速部署,显著提升开发体验和项目可维护性。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online