网易首页 > 网易号 > 正文 申请入驻

使用 VS Code 在容器中开发 | Linux 中国

0
分享至

导读:一致性可以避免当你有多个开发人员开发同一个项目时出现问题。                           

本文字数:3162,阅读时长大约: 4分钟

https://linux.cn/article-13708-1.html
作者:Brant Evans
译者:Xingyu.Wang

当你有多个不同开发环境的开发人员在一个项目上工作时,编码和测试的不一致性是一种风险。(VS Code)是一个集成开发环境(IDE),可以帮助减少这些问题。它可以和容器结合起来,为每个应用程序提供独立的开发环境,同时提供一个一致的开发环境。

VS Code 的 使你能够创建一个容器定义,使用该定义来构建一个容器,并在容器内进行开发。这个容器定义可以和应用程序代码一起被嵌入到源代码库中,这使得所有的开发人员可以使用相同的定义在容器中进行构建和开发。

默认情况下,“Remote - Containers” 扩展使用 Docker 来构建和运行容器,但使用 的容器运行环境也很容易,它可以让你使用 。

本文将带领你完成设置,通过 Podman 在免 root 容器内使用 VS Code 和 “Remote - Containers” 扩展进行开发。

初始配置

在继续之前,请确保你的红帽企业 Linux(RHEL)或 Fedora 工作站已经更新了最新的补丁,并且安装了 VS Code 和 “Remote - Containers” 扩展。(参见 了解更多安装信息)

接下来,用一个简单的 dnf install 命令来安装 Podman 和它的支持包:

  1. $ sudo dnf install -y podman

安装完 Podman 后,配置 VS Code 以使用 Podman 的可执行文件(而不是 Docker)与容器进行交互。在 VS Code 中,导航到 “文件 > 首选项 > 设置”,点击 “扩展” 旁边的 “>” 图标。在出现的下拉菜单中,选择 “Remote - Containers”,并向下滚动找到 “Remote - Containers: Docker Path” 选项。在文本框中,用 “podman” 替换 “docker”。

在文本框中输入 “podman”

现在配置已经完成,在 VS Code 中为该项目创建一个新的文件夹或打开现有的文件夹。

定义容器

本教程以创建 Python 3 开发的容器为例。

“Remote - Containers” 扩展可以在项目文件夹中添加必要的基本配置文件。要添加这些文件,通过在键盘上输入 Ctrl+Shift+P 打开命令面板,搜索 “Remote-Containers: Add Development Container Configuration Files”,并选择它。

Remote-Containers: Add Development Container Configuration Files

在接下来的弹出窗口中,定义你想设置的开发环境的类型。对于这个例子的配置,搜索 “Python 3” 定义并选择它。

选择 Python 3 定义

接下来,选择将在容器中使用的 Python 的版本。选择 “3 (default)” 选项以使用最新的版本。

选择 “3 (default)” 选项

Python 配置也可以安装 Node.js,但在这个例子中,取消勾选 “Install Node.js”,然后点击 “OK”。

取消勾选 “Install Node.js"

它将创建一个 .devcontainer 文件夹,包含文件devcontainer.jsonDockerfile。VS Code 会自动打开devcontainer.json 文件,这样你就可以对它进行自定义。

启用免 root 容器

除了明显的安全优势外,以免 root 方式运行容器的另一个原因是,在项目文件夹中创建的所有文件将由容器外的正确用户 ID(UID)拥有。要将开发容器作为免 root 容器运行,请修改 devcontainer.json 文件,在它的末尾添加以下几行:

  1. "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,Z",

  2. "workspaceFolder": "/workspace",

  3. "runArgs": ["--userns=keep-id"],

  4. "containerUser": "vscode"

这些选项告诉 VS Code 用适当的 SELinux 上下文挂载工作区,创建一个用户命名空间,将你的 UID 和 GID 原样映射到容器内,并在容器内使用 vscode 作为你的用户名。devcontainer.json 文件应该是这样的(别忘了行末的逗号,如图所示):

更新后的 devcontainer.json 文件

现在你已经设置好了容器的配置,你可以构建容器并打开里面的工作空间。重新打开命令调板(用 Ctrl+Shift+P),并搜索 “Remote-Containers: Rebuild and Reopen in Container”。点击它,VS Code 将开始构建容器。现在是休息一下的好时机(拿上你最喜欢的饮料),因为构建容器可能需要几分钟时间:

构建容器

一旦容器构建完成,项目将在容器内打开。在容器内创建或编辑的文件将反映在容器外的文件系统中,并对这些文件应用适当的用户权限。现在,你可以在容器内进行开发了。VS Code 甚至可以把你的 SSH 密钥和 Git 配置带入容器中,这样提交代码就会像在容器外编辑时那样工作。

接下来的步骤

现在你已经完成了基本的设置和配置,你可以进一步加强配置的实用性。比如说:

◈ 修改 Dockerfile 以安装额外的软件(例如,所需的 Python 模块)。

◈ 使用一个定制的容器镜像。例如,如果你正在进行 Ansible 开发,你可以使用 的 。(确保通过 Dockerfile 将 vscode 用户添加到容器镜像中)

◈ 将 .devcontainer 目录下的文件提交到源代码库,以便其他开发者可以利用容器的定义进行开发工作。

在容器内开发有助于防止不同项目之间的冲突,因为隔离了不同项目的依赖关系及代码。你可以使用 Podman 在免 root 环境下运行容器,从而提高安全性。通过结合 VS Code、“Remote - Containers” 扩展和 Podman,你可以轻松地为多个开发人员建立一个一致的环境,减少设置时间,并以安全的方式减少开发环境的差异带来的错误。

via:

作者: 选题: 译者: 校对:

本文由 原创编译, 荣誉推出

欢迎遵照 CC-BY-NC-SA 协议规定转载,

如需转载,请在文章下留言 “ 转载:公众号名称”,

我们将为您添加白名单,授权“ 转载文章时可以修改”。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
“华系内战”!选阿维塔12,还是其他?

“华系内战”!选阿维塔12,还是其他?

买车大师
2026-05-07 10:47:45
红酒白酒全面崩盘,中国人为啥突然不愿意喝酒了呢?

红酒白酒全面崩盘,中国人为啥突然不愿意喝酒了呢?

流苏晚晴
2026-05-12 19:17:02
43岁百亿香港女富豪烧炭身亡,公司面临巨大财政压力,比港剧还惨

43岁百亿香港女富豪烧炭身亡,公司面临巨大财政压力,比港剧还惨

王二哥老搞笑
2026-05-13 18:34:29
国际足联高层来了!与宋凯见面 施压央视:54亿打包两届世界杯

国际足联高层来了!与宋凯见面 施压央视:54亿打包两届世界杯

念洲
2026-05-13 13:25:09
头皮发麻!广东飞蚁大爆发 住30几楼都逃不掉

头皮发麻!广东飞蚁大爆发 住30几楼都逃不掉

看看新闻Knews
2026-05-13 12:04:06
特朗普访华,“正能量大V”们集体沉默了

特朗普访华,“正能量大V”们集体沉默了

清书先生
2026-05-13 21:52:18
特朗普专机落地!抵达北京开启访华行程

特朗普专机落地!抵达北京开启访华行程

看看新闻Knews
2026-05-13 20:44:02
24小时内,中国收3个好消息!特朗普的第一份大礼,已经到位了!

24小时内,中国收3个好消息!特朗普的第一份大礼,已经到位了!

千里持剑
2026-05-13 11:31:35
太搞笑了!女子低着头玩手机,原来头发下面真的不是后脖子

太搞笑了!女子低着头玩手机,原来头发下面真的不是后脖子

丫头舫
2026-05-13 16:07:45
“67岁产女妈妈卧床” 老伴回应:系半月前在老家突发脑梗 女儿今年将上小学

“67岁产女妈妈卧床” 老伴回应:系半月前在老家突发脑梗 女儿今年将上小学

红星新闻
2026-05-13 13:54:49
创业板历史新高!外资集体重仓6家低价算力股,最高8元,最低5元

创业板历史新高!外资集体重仓6家低价算力股,最高8元,最低5元

长风价值掘金
2026-05-13 15:44:04
马斯克:我正乘坐空军一号前往北京 老黄在我旁边

马斯克:我正乘坐空军一号前往北京 老黄在我旁边

财闻
2026-05-13 18:36:00
4月汽车销量前十名仅剩一款燃油车!麦肯锡:燃油车中短期内在中国市场不会快速退出历史舞台

4月汽车销量前十名仅剩一款燃油车!麦肯锡:燃油车中短期内在中国市场不会快速退出历史舞台

每日经济新闻
2026-05-13 16:52:04
“摸奶子”惹争议!OPPO的流量反噬开始了

“摸奶子”惹争议!OPPO的流量反噬开始了

广告创意
2026-05-13 08:25:55
刚刚!彻夜谈判失败!

刚刚!彻夜谈判失败!

中国半导体论坛
2026-05-13 12:39:51
浙江宣传评世界杯转播权之争:与其花费巨资追捧海外赛事,不如投入本土足球

浙江宣传评世界杯转播权之争:与其花费巨资追捧海外赛事,不如投入本土足球

澎湃新闻
2026-05-08 12:24:10
刚刚,特朗普落地北京!浩浩荡荡的美国总统车队都有哪些玄机?

刚刚,特朗普落地北京!浩浩荡荡的美国总统车队都有哪些玄机?

军武速递
2026-05-13 21:34:28
克宫:莫斯科和北京将同时宣布普京访问中国的日期

克宫:莫斯科和北京将同时宣布普京访问中国的日期

俄罗斯卫星通讯社
2026-05-13 14:59:45
青海17岁女学生溺亡!主动去的桥边,知情人曝猛料,恐不止是意外

青海17岁女学生溺亡!主动去的桥边,知情人曝猛料,恐不止是意外

北纬的咖啡豆
2026-05-12 11:29:42
闪婚闪离 千万房产该怎么分?法院判了

闪婚闪离 千万房产该怎么分?法院判了

北青网-北京青年报
2026-05-13 15:12:10
2026-05-13 23:51:00
Linux
Linux
Linux 中国开源社区
8018文章数 73112关注度
往期回顾 全部

科技要闻

腾讯一季度营收1964.6亿元 同比增9%

头条要闻

女子闪婚获千万房产99%份额闪离后起诉分割 法院判了

头条要闻

女子闪婚获千万房产99%份额闪离后起诉分割 法院判了

体育要闻

14年半,74万,何冰娇没选那条更安稳的路

娱乐要闻

白鹿掉20万粉,网友为李晨鸣不平

财经要闻

美国总统特朗普抵达北京

汽车要闻

C级纯电轿跑 吉利银河"TT"申报图来了

态度原创

时尚
本地
手机
教育
军事航空

专栏 | 进入心流后,不被洪流裹挟

本地新闻

用苏绣的方式,打开江西婺源

手机要闻

iPhone18Pro配色敲定+iOS 27功能曝光!今年9月的苹果,料有点多

教育要闻

1980年中考:6加6除6,等于多少?

军事要闻

沙特被指3月曾对伊朗发动多次“报复性”空袭

无障碍浏览 进入关怀版