Windows 上通过 VScode 配置 Docker

Windows 上通过 VScode 配置Docker

引言

在现代软件开发中,容器化技术已经成为确保开发环境一致性的重要手段。本文将详细介绍如何使用 VS Code 的 Dev Containers 扩展来在 Unstructured 容器环境中开发本地项目,从问题的提出到最终解决方案的实施,包括所有必要的步骤和配置。

前提

电脑已经安装好 Docker。

可以看我另一篇文章:
Windows 11 下正确安装 Docker Desktop 到 D 盘的完整教程

问题背景

本教程使用开源项目 unstructured 的 Docker 部署为例子。

在使用 Unstructured 这样的专业工具进行开发时,我们常常需要特定的运行环境。虽然可以通过 Docker 容器获得这个环境,但如何在容器中访问和开发本地项目文件成为一个常见挑战。

解决方案:使用 Dev-Containers 扩展

步骤 1:安装必要的扩展

首先,确保安装了 VS Code 的 Dev Containers 扩展:

  1. 打开 VS Code
  2. 点击左侧扩展图标或按 Ctrl+Shift+X
  3. 搜索 "Dev Containers"
  4. 安装 Microsoft 官方的 "Dev Containers" 扩展

步骤 2:创建 devcontainer.json 配置

在本地项目目录中创建必要的配置文件:

  1. 在项目根目录创建 .devcontainer 文件夹
  2. 在该文件夹中创建 devcontainer.json 文件
  3. 添加以下配置内容:
json 复制代码
{
  "name": "Unstructured Project",
  "image": "downloads.unstructured.io/unstructured-io/unstructured:latest",
  "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=cached",
  "workspaceFolder": "/workspace",
  "customizations": {
    "vscode": {
      "extensions": [
        "ms-python.python",
        "ms-python.vscode-pylance"
      ]
    }
  }
}

这个配置文件指定了:

  • 使用 Unstructured 的官方 Docker 镜像
  • 将本地项目目录挂载到容器的 /workspace 路径
  • 自动安装 Python 相关的 VS Code 扩展

步骤 3:在容器中重新打开项目

配置完成后:

  1. 在 VS Code 中打开命令面板(Ctrl+Shift+P
  2. 输入并选择 "Dev Containers: Reopen in Container"
  3. VS Code 将自动:
    • 基于指定的镜像创建一个新容器
    • 挂载本地项目目录到容器中
    • 在容器环境中重新打开 VS Code 窗口

步骤 4:验证结果

成功实施后,我们可以看到:

  1. Docker Desktop 显示一个新的容器已启动(如截图所示,名为 "clever_faraday")
  2. 容器使用的是 Unstructured 镜像
  3. VS Code 窗口现在连接到了容器环境
  4. 在 VS Code 的文件浏览器中可以看到并编辑本地项目文件
  5. 所有操作都在 Unstructured 的环境中执行,同时保持对本地文件的访问

    配置好后,最后别忘了安装项目:
bash 复制代码
pip install "unstructured[all-docs]"

工作原理解析

Dev Containers 扩展的核心功能是将本地开发与容器化环境无缝集成:

  1. 挂载机制 :通过 workspaceMount 配置,实现本地文件系统与容器内部文件系统的双向同步
  2. 环境隔离:代码在容器内运行,确保环境一致性,避免"在我的机器上可以运行"的问题
  3. 开发体验保持:VS Code 的所有功能(代码补全、调试等)在容器环境中依然可用

常见问题排查

如果遇到问题:

  1. 容器无法启动:检查 Docker Desktop 是否正在运行,以及镜像是否已经安装
  2. 文件更改不同步 :确认 workspaceMount 配置正确,并检查文件权限

最后

这种方法不仅适用于 Unstructured,也可以扩展到其他需要特定环境的项目开发中。


相关推荐
诡异森林。2 分钟前
Docker--Docker网络原理
网络·docker·容器
ALex_zry16 分钟前
Docker Macvlan网络配置实战:解决“network already exists“错误
网络·docker·php
IT小辉同学22 分钟前
Docker如何更换镜像源提高拉取速度
spring cloud·docker·eureka
子非衣1 小时前
Windows云主机远程连接提示“出现了内部错误”
服务器·windows
Geek__19921 小时前
VSCode远程图形化GDB
ide·vscode·编辑器
GnixAij2 小时前
Docker SSH端口转发
docker·ssh
剁椒排骨2 小时前
win11什么都不动之后一段时间黑屏桌面无法显示,但鼠标仍可移动,得要熄屏之后才能进入的四种解决方法
运维·windows·经验分享·计算机外设·win11·win10
angushine2 小时前
让Docker端口映射受Firewall管理而非iptables
运维·docker·容器
李菠菜3 小时前
Windows Terminal 集成 Git Bash 的简洁配置指南
windows·git
xx155802862xx3 小时前
vscode 打开csv乱码
ide·vscode·编辑器