0

0

VSCode如何集成Docker开发环境 VSCode配置Docker开发的完整教程

看不見的法師

看不見的法師

发布时间:2025-08-08 17:50:01

|

851人浏览过

|

来源于php中文网

原创

  1. 首先安装docker desktop并确保服务正常运行;2. 在vscode中安装docker和remote - containers插件;3. 配置devcontainer.json文件定义开发环境,包括镜像、扩展、设置和创建后命令;4. 通过vscode左下角的remote explorer点击“reopen in container”在容器中打开项目;5. 使用tasks.json配置构建、测试等任务;6. 使用launch.json配置调试,注意设置justmycode为false以调试第三方库;7. 优化docker镜像体积可通过多阶段构建、选择轻量基础镜像、合并run指令、使用.dockerignore和清理缓存实现;8. vscode docker插件实用技巧包括查看镜像容器信息、一键管理容器、编辑dockerfile、支持compose、远程开发、调试容器应用、监控资源及自动生成docker文件;9. 解决网络问题需检查docker守护进程dns配置、确保容器在同一网络、避免端口冲突、配置防火墙规则、使用compose网络定义,并通过nslookup等命令排查dns解析问题。所有配置完成后,vscode即可实现一致、可复用的容器化开发环境,完整支持开发、调试与部署流程。

VSCode如何集成Docker开发环境 VSCode配置Docker开发的完整教程

VSCode集成Docker开发环境,简单来说,就是让你的代码在容器里跑起来,更方便调试、测试和部署。下面详细说说怎么搞。

配置Docker开发环境,核心在于安装必要的插件、配置Docker连接,以及理解如何利用VSCode的Tasks和Debug功能。

解决方案

首先,确保你已经安装了Docker Desktop,并且Docker服务正常运行。这是基础,没有Docker,后面的都白搭。

然后,在VSCode中安装以下几个插件:

  • Docker: 这是官方插件,提供了对Docker镜像、容器和Compose文件的支持。
  • Remote - Containers: 这个插件允许你连接到Docker容器进行开发,是核心。

安装完插件后,就可以开始配置了。

  1. 连接到Docker守护进程: VSCode的Docker插件会自动检测到本地运行的Docker守护进程。如果你的Docker守护进程运行在远程服务器上,你需要配置

    docker.host
    设置。这个设置可以在VSCode的设置(File -> Preferences -> Settings)中找到,搜索"docker.host"即可。

  2. 使用

    devcontainer.json
    文件: 在你的项目根目录下创建一个
    .devcontainer
    文件夹,并在其中创建一个
    devcontainer.json
    文件。这个文件描述了你的开发容器的环境配置。

    一个简单的

    devcontainer.json
    文件可能如下所示:

    {
      "name": "My Dev Container",
      "image": "mcr.microsoft.com/devcontainers/python:3.9",
      "extensions": [
        "ms-python.python",
        "ms-azuretools.vscode-docker"
      ],
      "settings": {
        "python.pythonPath": "/usr/local/bin/python"
      },
      "postCreateCommand": "pip install -r requirements.txt"
    }
    • name
      : 容器的名称,随便起。
    • image
      : 使用的Docker镜像。这里用的是官方的Python 3.9镜像。你可以根据你的项目选择合适的镜像。
    • extensions
      : 需要安装的VSCode插件。这里安装了Python和Docker插件。
    • settings
      : VSCode的设置。这里设置了Python解释器的路径。
    • postCreateCommand
      : 在容器创建后执行的命令。这里安装了
      requirements.txt
      中的依赖。
  3. 打开项目在容器中: 点击VSCode左下角的绿色按钮(Remote Explorer),选择 "Reopen in Container"。VSCode会根据

    devcontainer.json
    文件的配置,自动构建并启动容器,然后连接到容器中。

  4. 配置Tasks和Debug: 现在你可以在容器中进行开发了。为了方便构建、测试和调试,你可以配置VSCode的Tasks和Debug功能。

    • Tasks: 在
      .vscode
      文件夹下创建一个
      tasks.json
      文件。例如,你可以创建一个运行测试的task:
    {
      "version": "2.0.0",
      "tasks": [
        {
          "label": "Run Tests",
          "type": "shell",
          "command": "pytest",
          "options": {
            "cwd": "${workspaceFolder}"
          },
          "problemMatcher": []
        }
      ]
    }
    • Debug: 在
      .vscode
      文件夹下创建一个
      launch.json
      文件。例如,你可以创建一个调试Python程序的配置:
    {
      "version": "0.2.0",
      "configurations": [
        {
          "name": "Python: Current File",
          "type": "python",
          "request": "launch",
          "program": "${file}",
          "console": "integratedTerminal",
          "justMyCode": false
        }
      ]
    }

    注意

    justMyCode
    要设置为
    false
    ,否则调试时可能无法进入第三方库的代码。

  5. 一些小技巧:

    • 使用
      docker-compose.yml
      文件来定义多个容器之间的关系。
    • devcontainer.json
      文件中使用
      forwardPorts
      来暴露容器的端口。
    • 使用
      remote.SSH.configFile
      来配置SSH连接,方便连接到远程Docker守护进程。

Docker集成后,相当于你的开发环境被“打包”到了一个容器里,无论你在哪里开发,环境都是一致的。而且,也更容易模拟生产环境,避免“在我机器上能跑”的尴尬情况。

Docker镜像体积过大如何优化?

优化Docker镜像体积,其实就是在Dockerfile里做文章。

  1. 使用多阶段构建 (Multi-stage builds): 这是最有效的优化方法之一。你可以使用一个镜像来构建你的应用,然后将构建好的文件复制到另一个更小的镜像中。

    # Build stage
    FROM maven:3.8.5-openjdk-17 AS builder
    WORKDIR /app
    COPY pom.xml .
    RUN mvn dependency:go-offline
    COPY src ./src
    RUN mvn clean install -DskipTests
    
    # Production stage
    FROM eclipse-temurin:17-jre-slim
    WORKDIR /app
    COPY --from=builder /app/target/*.jar app.jar
    EXPOSE 8080
    ENTRYPOINT ["java", "-jar", "app.jar"]

    这个例子中,

    maven:3.8.5-openjdk-17
    镜像用于构建Java应用,构建完成后,只将JAR文件复制到
    eclipse-temurin:17-jre-slim
    镜像中。

  2. 选择合适的Base Image: 选择体积小的Base Image。例如,Alpine Linux是一个非常小的Linux发行版,适合作为Base Image。但是,Alpine Linux使用musl libc而不是glibc,可能需要一些额外的配置。

  3. 合并RUN指令: Dockerfile中的每个RUN指令都会创建一个新的Layer。尽量将多个RUN指令合并成一个,减少Layer的数量。

    RUN apt-get update && \
        apt-get install -y --no-install-recommends some-package && \
        rm -rf /var/lib/apt/lists/*

    这个例子中,

    apt-get update
    apt-get install
    rm -rf
    命令被合并成一个RUN指令。

  4. 利用.dockerignore文件: 类似于

    .gitignore
    文件,
    .dockerignore
    文件可以排除不需要的文件和文件夹,避免将它们复制到镜像中。

  5. 清理不必要的文件: 在构建过程中,可能会产生一些临时文件。在构建完成后,及时清理这些文件。例如,在安装完依赖后,可以删除缓存文件。

  6. 使用更小的依赖: 尽量使用更小的依赖库。例如,如果你的应用只需要JSON处理功能,可以考虑使用

    jsonlite
    而不是
    jackson

    BlessAI
    BlessAI

    Bless AI 提供五个独特的功能:每日问候、庆祝问候、祝福、祷告和名言的文本生成和图片生成。

    下载

VSCode Docker插件有哪些实用技巧?

VSCode Docker插件有很多实用技巧,可以提高开发效率。

  1. 快速查看镜像和容器信息: 在VSCode的侧边栏中,你可以快速查看本地的镜像、容器、网络和卷。点击一个镜像或容器,可以查看它的详细信息,例如端口映射、环境变量和日志。

  2. 一键启动和停止容器: 在VSCode中,你可以一键启动、停止、重启和删除容器。还可以进入容器的终端,执行命令。

  3. 编辑和构建Dockerfile: VSCode提供了Dockerfile的语法高亮和自动补全功能。你可以直接在VSCode中编辑Dockerfile,然后使用Docker插件构建镜像。

  4. 使用Docker Compose: VSCode Docker插件支持Docker Compose。你可以直接在VSCode中启动、停止和重启Compose应用。

  5. 远程开发: 使用Remote - Containers插件,你可以连接到远程Docker守护进程,在远程容器中进行开发。这对于需要在特定环境中进行开发的项目非常有用。

  6. 调试Docker容器: VSCode支持调试Docker容器中的应用。你可以使用VSCode的Debug功能,设置断点、查看变量和单步执行代码。

  7. 监控容器资源: VSCode Docker插件可以监控容器的CPU、内存和网络使用情况。这对于性能优化和故障排除非常有用。

  8. 快速创建Docker文件: 通过右键单击项目资源管理器中的文件或文件夹,然后选择“Docker: Add Dockerfile to Workspace”或“Docker: Add Docker Compose Configuration”,可以快速生成Dockerfile或docker-compose.yml文件。

  9. 自动端口转发: 当你启动一个容器时,VSCode Docker插件会自动检测容器暴露的端口,并将其转发到本地。

如何解决VSCode Docker开发中常见的网络问题?

在VSCode Docker开发中,网络问题是比较常见的。

  1. 容器无法访问外部网络: 确保你的Docker守护进程配置了正确的DNS服务器。你可以在

    /etc/docker/daemon.json
    文件中配置DNS服务器。

    {
      "dns": ["8.8.8.8", "8.8.4.4"]
    }

    修改完

    daemon.json
    文件后,需要重启Docker守护进程。

  2. 容器之间无法互相访问: 确保你的容器在同一个Docker网络中。你可以使用

    docker network create
    命令创建一个新的网络,然后将容器连接到该网络。

    docker network create my-network
    docker run --network my-network --name container1 ...
    docker run --network my-network --name container2 ...
  3. 端口冲突: 确保你的容器暴露的端口没有被其他应用占用。你可以使用

    docker port
    命令查看容器的端口映射。

    docker port 
  4. 防火墙问题: 确保你的防火墙没有阻止容器的网络流量。你需要允许容器的网络流量通过防火墙。

  5. DNS解析问题: 确保你的容器可以正确解析域名。你可以使用

    nslookup
    命令测试DNS解析。

    docker exec -it  nslookup google.com
  6. 使用Docker Compose的网络配置: 如果你使用Docker Compose,可以在

    docker-compose.yml
    文件中配置网络。

    version: "3.9"
    services:
      web:
        image: nginx:latest
        ports:
          - "80:80"
        networks:
          - my-network
      app:
        image: my-app:latest
        networks:
          - my-network
    networks:
      my-network:
        driver: bridge

    这个例子中,

    web
    app
    服务都在
    my-network
    网络中,可以互相访问。

  7. 容器内部的网络配置: 有时候,容器内部的网络配置也可能导致问题。例如,容器内部的DNS配置可能不正确。你可以在容器内部修改

    /etc/resolv.conf
    文件来配置DNS服务器。但是,这种方法不推荐,因为容器重启后,
    /etc/resolv.conf
    文件会被重置。更好的方法是在Dockerfile中配置DNS服务器。

总的来说,解决VSCode Docker开发中的网络问题,需要仔细检查Docker守护进程配置、容器网络配置、端口映射和防火墙设置。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

751

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

636

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

758

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

618

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1262

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

577

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

706

2023.08.11

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

36

2026.01.14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
go语言零基础开发内容管理系统
go语言零基础开发内容管理系统

共34课时 | 2.5万人学习

第二十三期_前端开发
第二十三期_前端开发

共98课时 | 7.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号