欢迎光临
我们一直在努力

Docker+Vscode搭建(本地/远程)开发环境

Docker+Vscode搭建(本地/远程)开发环境

日常开发中,环境配置一直是令人头疼的问题 —— 不同机器的依赖版本不一致、本地环境与生产环境差异大、多语言开发环境冲突…… 而 Docker+VSCode 的组合能完美解决这些痛点:用 Docker 封装统一的开发环境,通过 VSCode 远程连接实现本地 / 远程一致的开发体验。本文就手把手教你搭建基于 Ubuntu 24.04 的多语言(Python/Rust等)开发容器,并配置 VSCode 远程开发环境。

一前置准备:安装docker环境

首先需要在本地环境安装 Docker 服务,支持 Linux、Windows、MacOS 三大系统: Linux:直接通过系统包管理器安装(如apt install docker.io),安装后记得启动 Docker 服务并配置用户权限(避免每次用sudo); Windows/MacOS:下载Docker Desktop (https://www.docker.com/products/docker-desktop/),安装后启动即可(自动配置环境变量和服务)。 验证安装是否成功:

docker –version  # 输出Docker版本号即成功
docker compose version  # 验证Compose工具(新版Docker已内置)

二、定制开发镜像:封装统一环境

  • 拉取基础镜像 先拉取 Ubuntu 24.04 官方镜像,作为定制的基础:

  • docker pull ubuntu:24.04

  • 编写Dockerfile 定制镜像 在空目录下创建Dockerfile文件,复制以下内容(或者更加自己的需求在RUN 修改自己需要安装的服务环境): 安装基础服务及相关开发运行环境。

  • FROM ubuntu:24.04 

    ENV WORKSPACE=/data/workspace
    ENV TMP_DIR=/data/temp
    ARG TMP_DIR=/data/temp

    # 安装基础依赖 + SSH 服务 + 工具链(移除 zsh,强化 bash)
    RUN apt update && \\
        apt install -y \\
        # 基础工具(移除 zsh,保留 bash 并设为默认)
        curl unzip bash git wget \\
        openssh-server \\
        vim \\
        webp \\
        locales \\
        fonts-noto-cjk \\
        tzdata \\
        # Python 环境依赖
        python3 python3-pip python3-venv python3-dev python3-full \\
        python3-setuptools python3-wheel pipx \\
        # Rust 编译依赖
        build-essential libssl-dev pkg-config && \\
        # 设置 bash 为默认 shell(替代 zsh)
        chsh -s /bin/bash && \\
        # 清理缓存减小镜像体积
        apt clean && \\
        rm -rf /var/lib/apt/lists/*

    # 配置 SSH 服务(保持原有配置)
    RUN mkdir /var/run/sshd \\
        && sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config \\
        && sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config \\
        && sed -i 's/UsePAM yes/UsePAM no/' /etc/ssh/sshd_config \\
        && sed -i 's/#Port 22/Port 2234/' /etc/ssh/sshd_config

    # 生成中文 locale 并设置字符集
    RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && \\
        sed -i '/zh_CN.UTF-8/s/^# //g' /etc/locale.gen && \\
        locale-gen

    # 字符集环境变量
    ENV LANG=zh_CN.UTF-8
    ENV LANGUAGE=zh_CN:zh
    ENV LC_ALL=zh_CN.UTF-8

    # 设置时区
    ENV TZ=Asia/Shanghai
    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

    # ========== Python 环境增强(使用虚拟环境规避 PEP 668 限制) ==========
    # 创建 Python 虚拟环境并激活(全局生效)
    RUN mkdir -p ${WORKSPACE}/.venv && \\
        python3 -m venv ${WORKSPACE}/.venv && \\
        # 激活虚拟环境的环境变量(仅写入 bashrc,移除 zshrc)
        echo ". ${WORKSPACE}/.venv/bin/activate" >> /root/.bashrc && \\
        # 给虚拟环境脚本添加执行权限
        chmod +x ${WORKSPACE}/.venv/bin/activate

    # 配置 pip 镜像源(国内加速)
    RUN mkdir -p /root/.config/pip && \\
        echo "[global]" > /root/.config/pip/pip.conf && \\
        echo "index-url = https://pypi.tuna.tsinghua.edu.cn/simple" >> /root/.config/pip/pip.conf && \\
        echo "trusted-host = pypi.tuna.tsinghua.edu.cn" >> /root/.config/pip/pip.conf

    # 激活虚拟环境并更新 pip + 安装常用包
    RUN . ${WORKSPACE}/.venv/bin/activate && \\
        python3 -m pip install –upgrade pip && \\
        pip install numpy pandas requests flask fastapi uvicorn black isort pytest

    # ========== Rust 环境安装 ==========
    # 安装 rustup(Rust 官方安装工具)
    RUN curl –proto '=https' –tlsv1.2 -sSf https://sh.rustup.rs | sh -s — -y && \\
        # 手动加载 rustup 环境变量
        . /root/.cargo/env && \\
        # 立即更新 Rust 并设置默认版本
        rustup update stable && \\
        rustup default stable && \\
        # 安装常用 Rust 组件
        rustup component add rustfmt clippy rust-analyzer

    # 配置 Rust 环境变量(让容器运行时可用 rustc/cargo)
    ENV PATH="/root/.cargo/bin:${PATH}"

    # 设置 Rust 镜像源(国内加速)
    RUN mkdir -p /root/.cargo && \\
        echo "[source.crates-io]" > /root/.cargo/config.toml && \\
        echo 'replace-with = "rsproxy"' >> /root/.cargo/config.toml && \\
        echo "[source.rsproxy]" >> /root/.cargo/config.toml && \\
        echo 'registry = "https://rsproxy.cn/crates.io-index"' >> /root/.cargo/config.toml && \\
        echo "[registries.rsproxy]" >> /root/.cargo/config.toml && \\
        echo 'index = "https://rsproxy.cn/crates.io-index"' >> /root/.cargo/config.toml && \\
        echo "[net]" >> /root/.cargo/config.toml && \\
        echo 'git-fetch-with-cli = true' >> /root/.cargo/config.toml

    # 设置工作目录
    WORKDIR $WORKSPACE

    # 暴露 SSH 端口
    EXPOSE 2234

    # 启动命令:bash 执行,激活虚拟环境后启动 SSH 服务
    CMD ["/bin/bash", "-c", ". ${WORKSPACE}/.venv/bin/activate && /usr/sbin/sshd -D"]

  • 构建镜像 根据dockerfile制作镜像:在Dockerfile同级目录下执行这个目录,生成devbox:latest镜像

  • docker build -t devbox:latest .

    构建完成后,执行docker images可看到devbox:latest镜像,说明构建成功。

    生成定制镜像

    三、配置容器启动:Docker Compose

    编写一个名为docker-compose.yml的文件(默认名字),内容如下,指定相关的启动信息

    services:
      devbox:
        image: devbox:latest  # 使用刚构建的镜像
        container_name: devbox  # 容器名称,方便管理
        #network_mode: host window和macOs不能使用host模式,Mac/Windows 的 Docker Desktop 基于 Linux 虚拟机,host网络模式无效
        restart: always  # 宿主机重启后自动启动容器
        working_dir: /root/  # 容器默认工作目录
        volumes:
          # 挂载本地目录到容器内,实现代码同步(关键!)
          – ${PWD}/:/root/workspace/
        tty: true  # 保持终端连接
        stdin_open: true  # 允许标准输入
        # 端口映射(核心:宿主机端口→容器端口)
        # 注意:Mac/Windows不建议用network_mode: host,bridge模式更稳定
        ports:
          – "2234:2234"  # SSH端口映射,用于VSCode远程连接
          # 可按需添加其他端口映射,例如:
          # – "8080:8080"  # Web服务端口
          # – "8000:8000"  # FastAPI服务端口
        # 可选:增加容器资源限制
        # deploy:
        #   resources:
        #     limits:
        #       cpus: '2'
        #       memory: 4G

    四、启动开发容器

    在docker-compose.yml同级目录下执行如下命令启动容器,容器名字:devbox

    docker compose up -d

    • -d:后台运行容器,不占用当前终端;

    • 启动后执行docker ps,可看到devbox容器状态为Up,说明启动成功。

    • 设置容器 root 密码(首次连接必备) 启动容器后,需要设置 root 密码才能通过 SSH 连接:

    # 进入容器内部
    docker exec -it devbox bash
    # 设置root密码(输入两次相同密码即可)
    passwd root
    # 退出容器
    exit

    五、搭建vscode远程连接开发环境

    容器启动后,即可通过 VSCode 的「远程 SSH」插件连接容器,实现本地编辑、容器内运行的开发。

  • 安装 VSCode 插件 打开 VSCode,安装以下核心插件:

  • Remote – SSH:实现远程 SSH 连接(必装);

  • 配置SSH远程连接信息 点击左下角连接,然后配置SSH主机:

    根据实际主机地址进行如下内容填写,保存。

  • 启动远程连接 配置完成后,重新打开vscode,选择对应docker地址进行连接:

  • 输入前面设置的密码:

    成功连接上docker容器环境:

    六、远程服务器部署(扩展)

    如果需要在远程服务器搭建相同环境,只需:

  • 将Dockerfile、docker-compose.yml上传到远程服务器;

  • 服务器安装 Docker 环境后,执行docker build -t devbox:latest .和docker compose up -d;

  • VSCode 连接时,将localhost替换为远程服务器 IP,其余步骤一致。

  • 七、总结

    通过 Docker 封装统一的开发环境,结合 VSCode 远程 SSH 连接,我们实现了:

    • 环境一致性:本地 / 远程服务器使用相同的镜像,避免 “本地能跑、线上报错”;

    • 多语言兼容:Python/Rust 环境隔离,无需担心系统依赖冲突;

    • 便捷部署:一行命令启动 / 停止环境,跨平台适配 Linux/Mac/Windows。 这套方案既适合个人开发,也可团队共享镜像,大幅降低环境配置成本,让我们专注于代码本身开发工作。

    赞(0)
    未经允许不得转载:171主机测评 » Docker+Vscode搭建(本地/远程)开发环境
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址