当前位置: 首页 > news >正文

【docker①】在VS Code中使用Docker容器

0 序言

本文将系统介绍在VS Code中使用Docker的相关知识,涵盖基础概念、环境配置、核心操作及高级应用。通过学习,你将理解为何在VS Code中集成Docker能提升开发效率,掌握Docker镜像、容器的基本概念,以及在VS Code中构建、运行、调试容器的具体方法,利用VS Code与Docker协同进行项目开发。

1 Docker与VS Code集成基础

在开发过程中,不同项目可能依赖不同的环境(如Python版本、数据库配置等),手动配置容易出现环境不一致问题。Docker通过容器化技术实现环境隔离,而VS Code提供了对Docker的深度支持,可在同一界面完成镜像构建、容器管理、代码调试等操作,减少工具切换成本,提升开发效率。

1.1 Docker核心概念

1.1.1 镜像(Image)

Docker镜像是一个包含代码、运行时、库、环境变量和配置文件的只读模板,是创建容器的基础。例如,一个Python镜像可能包含Python解释器、必要的依赖库等。

1.1.2 容器(Container)

容器是镜像的运行实例,是一个独立的可执行单元。镜像相当于,容器相当于对象,一个镜像可创建多个容器,容器间相互隔离。

1.1.3 Dockerfile

Dockerfile是一个文本文件,包含一系列指令,用于构建Docker镜像。通过Dockerfile,开发者可定义镜像的基础环境、安装依赖、配置程序等,实现镜像的可重复构建。

1.1.4 Docker Compose

Docker Compose是用于定义和运行多容器Docker应用的工具,通过yaml文件配置应用的服务,可一键启动、停止所有服务,适合多组件协同的项目(如前端+后端+数据库)。

总结就是,如果用面包这个例子来做一个类比的话,就是Dockerfile相当于面包磨具的图纸Image相当于制作面包的磨具Container相当于制作出来的面包Docker Compose相当于面包店的套餐组合单

2 环境准备

2.1 安装Docker

2.1.1 Windows系统

在这里还需要考虑一件事,就是原先电脑里是否有虚拟机,如果没有用过虚拟机,那就直接按照以下步骤即可。

但如果之前有在电脑创建过虚拟机并且运行了,有一定的数据储存情况下,我们得先确保要不要接着保留虚拟机,比如VirualBox等这些。

因为docker跟如VirualBox此类虚拟机还是存在一定的冲突风险的,所以如果后续还想接着使用虚拟机,最好还是先请确认一下,尤其是windows系统。

这里有个方法,可以实现在Windows系统中 Docker Desktop 和 VirtualBox 虚拟机共存,避免两者因虚拟化技术冲突而无法同时使用,可参考以下方法:

确认当前系统环境,通过在命令提示符中执行 wsl -l -v 命令,查看 Windows Subsystem for Linux(WSL)的安装和版本情况。

在这里插入图片描述

若输出结果中显示已安装的 Linux 发行版(如 Ubuntu)及其对应的 WSL 版本为 2,且状态为 Stopped 或 Running,则说明 WSL 2 环境已准备就绪。如果没有安装 WSL 2 或者没有对应的 Linux 发行版,需要先进行安装和配置。

此外就是要想使用docker的桌面版本,你得Windows系统版本号需要1904以上!!!

在这里插入图片描述

  1. 检查系统要求:需Windows 10 64位专业版、企业版或教育版(支持Hyper-V),或Windows 11。
  2. 下载Docker Desktop:访问Docker官网,下载对应版本并安装。
  3. 验证安装:打开命令提示符,输入docker --version,若显示版本信息则安装成功。

打开Docker官网,点击下载,
在这里插入图片描述
只要你的电脑是 x86 架构 64 位处理器,一般都是选择AMD64版本。

在这里插入图片描述

下载完后双击打开该exe文件,

在这里插入图片描述
选择以上两个选项,点击下一步。

在这里插入图片描述
等待加载。

在这里插入图片描述
Close and log out 注销 - 重新登录 - 启动 Docker 继续配置,注销只是短暂退出登录,不会丢文件。

在这里插入图片描述
在弹出该页面的地方选择Accept

在这里插入图片描述

单纯想先用 Docker 跑公开镜像、本地容器,不用登录,直接跳过即可。

如果你想用私有镜像、Docker Hub 远程操作,或是已经有账号,就直接sign in即可。

在这里插入图片描述
正常填写即可,也可以选择跳过,不影响后续操作。

在这里插入图片描述
接下来需要完成 WSL 2 集成配置,这样 Docker 才能借助 WSL 2 跑容器。

点击 Docker Desktop 右上角的 齿轮图标(Settings,设置),进入配置界面。

在这里插入图片描述
按上图要求完成配置。

在这里插入图片描述
Docker Desktop 已正常启动并处于运行状态,但还需结合功能验证来确认是否真的能正常工作。

win + r输出cmd打开Windows 命令提示符,输入docker ps并回车。

在这里插入图片描述

由于国内的镜像源拉取速度比较慢,很容易出现网络超时这种情况,因此有必要用国内的镜像源来加快拉取速度。

粘贴以下程序:

{"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能够正常拉取镜像。

在这里插入图片描述

如果出现这个就说明成功拉取到了。

当然,你也可以回到docker桌面端,在images中可以看到你拉取到的镜像,点击运行即可。

在这里插入图片描述

点运行后会弹出创建容器,根据自己需求填写后点运行即可。

在这里插入图片描述

运行后就可以看到运行结果了。

在这里插入图片描述

2.2 配置VS Code

2.2.1 安装Docker插件

  1. 打开VS Code,进入扩展面板(快捷键Ctrl+Shift+XCmd+Shift+X)。
  2. 搜索“Docker”,选择微软官方的“Docker”插件(作者为Microsoft),点击“安装”。
  3. 安装完成后,VS Code左侧会出现Docker图标,可通过该面板管理镜像、容器等。

在这里插入图片描述

这里就看到VsCode已经自动连接上docker了。
在这里插入图片描述

2.2.2 配置Docker连接(默认无需额外配置)

Docker插件默认会自动连接本地Docker服务,若需连接远程Docker服务,可按以下步骤:

  1. 打开VS Code设置(Ctrl+,Cmd+,)。
  2. 搜索“docker.host”,设置远程Docker服务地址(如tcp://remote-host:2375)。
  3. 重启VS Code使配置生效。

3 VS Code中使用Docker的核心操作

3.1 创建Dockerfile

3.1.1 新建Dockerfile

  1. 在VS Code中打开项目文件夹,右键新建文件,命名为Dockerfile(无扩展名)。
  2. 输入基础指令:
    在你新创建的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 Flaskapp = 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:指定基础镜像,必须为Dockerfile的第一条指令。
  • WORKDIR:设置后续指令的工作目录。
  • COPY:将本地文件复制到镜像中。
  • RUN:在镜像构建过程中执行命令。
  • EXPOSE:声明容器运行时暴露的端口(仅为文档说明,需配合-p参数映射)。
  • CMD:指定容器启动时执行的命令(可被docker run后的命令覆盖)。

3.2 构建Docker镜像

3.2.1 基于Dockerfile构建

  1. 打开VS Code终端(Ctrl+` 或Cmd+`)。
  2. 执行构建命令:
    docker build -t my-python-app:1.0 .
    
    • -t:指定镜像标签(格式为名称:版本)。
    • .:表示Dockerfile所在的当前目录。
  3. 构建完成后,可在VS Code的Docker面板Images中看到新构建的镜像。

在这里插入图片描述
从docker的images就能看到新建好的镜像了。

在这里插入图片描述

3.2.2 查看镜像信息

在VS Code Docker面板中,右键镜像选择“Inspect”,可查看镜像的详细配置(如层信息、环境变量等);或在终端执行:

docker images my-python-app:1.0

在这里插入图片描述

3.3 运行Docker容器

3.3.1 基础运行命令

在终端执行:

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中管理容器

  1. 打开Docker面板,在Containers中可看到运行中的容器。
  2. 右键容器可执行“Start”“Stop”“Restart”“Delete”等操作。
  3. 选择“Attach Shell”可进入容器内部终端;选择“View Logs”可查看容器运行日志。

在这里插入图片描述

3.4 调试容器内的应用

3.4.1 配置调试环境

  1. 在VS Code中创建.vscode/launch.json文件,添加Docker调试配置
{"version": "0.2.0",  // 配置文件的版本,固定值"configurations": [  // 调试配置列表(可以有多个配置){"name": "Docker: Python - Launch",  // 配置名称(自己能认就行,比如“调试Docker里的Python”)"type": "docker",  // 调试类型:告诉VS Code这是Docker环境的调试"request": "launch",  // 调试方式:启动新的容器并开始调试(另一种是“attach”,附加到已运行的容器)"preLaunchTask": "docker-build",  // 调试前自动执行的任务:这里是先构建镜像(确保代码最新)"python": {  // Python相关的调试配置"pathMappings": [  // 路径映射:关键!让VS Code知道本地代码和容器内代码的对应关系{"localRoot": "${workspaceFolder}",  // 本地代码路径(你电脑上的项目文件夹)"remoteRoot": "/app"  // 容器内代码路径(Dockerfile里WORKDIR设置的/app)}],"projectType": "general"  // 项目类型:通用Python项目(不用改)}}]
}

这个 launch.json 配置是用于 在 VS Code 中直接调试 Docker 容器内的 Python 代码。

因为通过上文我们已经通过 docker build 和 docker run 让代码在容器里跑起来了,但如果个问题:
如果代码出了 bug,怎么像本地调试那样一步步看哪里错了?

直接在容器里打印日志太麻烦,而 VS Code 的调试功能(断点、变量监视)又默认只能用在本地环境。

这个 launch.json 就是让 VS Code 和 Docker 容器打通,让调试器能到容器内部,直接调试里面运行的代码。

  1. 创建.vscode/tasks.json文件,定义构建任务
{"version": "2.0.0",  // 配置文件版本,固定值"tasks": [{"label": "docker-build",  // 任务名称(必须和launch.json里的preLaunchTask一致)"type": "docker-build",  // 任务类型:Docker构建(VS Code的Docker插件会识别)"dockerBuild": {"context": "${workspaceFolder}",  // 构建上下文:当前项目文件夹(和手动构建时的“.”作用一样)"tag": "my-python-app:1.0"  // 镜像标签(和手动构建的 -t 参数一样)}}]
}

这个 tasks.json 文件是为了在 VS Code 里更方便地管理 Docker 构建任务,让你不用每次手动输入 docker build 命令,同时和调试流程(launch.json 里的 preLaunchTask)联动,

你之前手动构建镜像的命令是:

docker build -t my-python-app:1.0 .

而 tasks.json 的作用是把这个命令固化成 VS Code 的一个任务,

以后就可以用快捷键自动执行构建。

3.4.2 启动调试

  1. 可以在程序中设置断点(点击行号左侧)。
  2. F5启动调试,或者在左侧选择运行和调试,VS Code会自动构建镜像、运行容器并附加调试器,程序执行到断点时会暂停,可查看变量、调用栈等信息。

在这里插入图片描述

在这里插入图片描述

从日志看,镜像构建已经成功完成。

构建过程利用了 Docker 的缓存机制(CACHED 的步骤),加速了构建流程(因为代码 / 依赖没变化,复用了之前的结果 )。

终端提示是正常的 VS Code 任务执行收尾逻辑,按需按任意键关闭即可,不影响镜像使用。

4 小结

本文很基础,介绍了在VS Code中使用Docker的全流程。首先明确了Docker与VS Code集成的价值——解决环境一致性问题并提升开发效率;接着讲解了镜像、容器等核心概念,以及Docker和VS Code的安装配置;然后通过实例演示了Dockerfile编写、镜像构建、容器运行及调试的具体操作。

掌握这些知识后,你可在VS Code中高效完成容器化开发,无论是单服务应用还是多组件协同项目(道理一样),都能通过Docker实现环境隔离与快速部署,显著提升开发体验和项目可维护性。

http://www.lryc.cn/news/620109.html

相关文章:

  • 从零用 NumPy 实现单层 Transformer 解码器(Decoder-Only)
  • 未来AI:微算法科技(NASDAQ:MLGO)开发基于忆阻器网络储层计算MemristorPattern虚拟平台
  • 通过限制网络访问来降低服务器被攻击风险的方法
  • 云原生技术k8s部署prometheus
  • 面向Python/C#开发者入门Java与Bukkit API
  • C# 反射和特性(元数据和反射)
  • Mysql——如何做到Redolog崩溃后恢复的
  • NLP学习之Transformer(1)
  • 算法题——哈希表
  • 洛谷 P2607 [ZJOI2008] 骑士-提高+/省选-
  • 从 Web 开发到数据科学:全栈基础技术总结
  • nm命令和nm -D命令参数
  • 互联网大厂Java求职面试实录:Spring Boot到微服务与AI的技术问答
  • 《量子雷达》第2章 从量子信息到量子雷达 预习2025.8.13
  • Canal解析MySQL Binlog原理与应用
  • RC4算法实现
  • 一键自动化:Kickstart无人值守安装指南
  • 如何优雅地实现API接口每 10秒轮询请求?
  • 力扣面试150题--三角形最小路径和 最小路径和 不同路径 最长回文子串
  • RagFlow启动源码说明
  • 前后端分离项目在云服务器的部署
  • 【系统安装】虚拟机中安装win10企业版系统记录
  • CSS保持元素宽高比,固定元素宽高比
  • 用 mock 把 ES 单元测试@elastic/elasticsearch-mock 上手
  • Python 环境隔离实战:venv、virtualenv 与 conda 的差异与最佳实践
  • 变分自编码器VAE的Pytorch实现
  • day39_2025-08-13
  • Go 微服务限流与熔断最佳实践:滑动窗口、令牌桶与自适应阈值
  • Day19 C 语言标准 IO 机制
  • React useMemo 深度指南:原理、误区、实战与 2025 最佳实践