一致性可以避免多个开发人员在同一个项目上工作时出现的问题。当多个开发人员在不同的开发环境中处理一个项目时,编码和测试的不一致是一个风险。VisualStudioCode(VSCode)是一个集成开发环境(IDE),可以帮助减少这些问题。它可以与容器结合,为每个应用程序提供独立的开发环境,同时提供一致的开发环境。VSCode的“远程-容器”扩展使您能够创建容器定义,使用该定义构建容器,并在容器内进行开发。该容器定义可以与应用程序代码一起签入源代码存储库,这使所有开发人员都可以使用相同的定义在容器中构建和开发。默认情况下,“Remote-Containers”扩展使用Docker来构建和运行容器,但它也很容易使用Podman的容器运行时环境,它允许您使用无根容器。本文将引导您完成设置,以通过Podman在无根容器中使用VSCode和“Remote-Containers”扩展进行开发。初始配置在继续之前,请确保您的RedHatEnterpriseLinux(RHEL)或Fedora工作站是最新的,安装了最新的补丁、VSCode和“Remote-Containers”扩展。(有关更多安装信息,请参阅VSCode网站。)接下来,使用简单的dnf安装命令安装Podman及其支持包:与容器。在VSCode中,导航到“文件>首选项>设置”,单击“扩展”旁边的“>”图标。在出现的下拉菜单中,选择“Remote-Containers”并向下滚动找到“Remote-Containers:DockerPath”选项。在文本框中,将“docker”替换为“podman”。在文本框中键入“podman”现在配置已完成,请在VSCode中为项目创建一个新文件夹或打开一个现有文件夹。定义容器本教程以创建使用Python3开发的容器为例。“Remote-Containers”扩展在项目文件夹中添加必要的基本配置文件。要添加这些文件,请在键盘上键入Ctrl+Shift+P打开命令面板,搜索“Remote-Containers:添加开发容器配置文件”,然后选择它。Remote-Containers:添加开发容器配置文件在下一个弹出窗口中,定义您要设置的开发环境类型。对于此示例配置,搜索“Python3”定义并选择它。选择Python3定义接下来,选择将在容器中使用的Python版本。选择“3(默认)”选项以使用最新版本。选择“3(默认)”选项Python配置也可以安装Node.js,但对于本例,取消选中“安装Node.js”并单击“确定”。取消选中“安装Node.js”,它将创建一个包含文件devcontainer.json和Dockerfile的.devcontainer文件夹。VSCode将自动打开devcontainer.json文件,以便您对其进行自定义。启用无根容器除了明显的安全优势外,运行无根容器的另一个原因是在项目文件夹中创建的所有文件都将由容器外部的正确用户ID(UID)拥有。要将开发容器作为无根容器运行,请修改devcontainer.json文件,在其末尾添加以下行:"workspaceMount":"source=${localWorkspaceFolder},target=/workspace,type=bind,Z","workspaceFolder":"/workspace","runArgs":["--userns=keep-id"],"containerUser":"vscode"这些选项告诉VSCode使用适当的SELinux上下文挂载工作区并创建一个user命名空间,将你的UID和GID原样映射到容器中,在容器中使用vscode作为你的用户名。devcontainer.json文件应该如下所示(不要忘记行尾的逗号,如图所示):更新的devcontainer.json文件现在您已经设置了容器的配置,您可以构建容器并打开里面的工作区。重新打开命令面板(使用Ctrl+Shift+P),然后搜索“Remote-Containers:RebuildandReopeninContainer”。单击它,VSCode将开始构建容器。现在是休息一下(喝点你最喜欢的饮料)的好时机,因为构建容器可能需要几分钟时间:构建容器构建容器后,项目将在容器内打开。在容器内创建或编辑的文件将反映在容器外的文件系统中,并向这些文件应用适当的用户权限。现在,您已准备好在容器内进行开发。VSCode甚至可以将您的SSH密钥和Git配置带入容器,因此提交代码就像在容器外编辑一样。后续步骤现在您已经完成了基本的设置和配置,您可以进一步增强配置的实用性。例如:修改Dockerfile以安装其他软件(例如所需的Python模块)。使用自定义容器映像。例如,如果您正在进行Ansible开发,则可以使用Quay.io的Ansible工具集。(确保通过Dockerfile将vscode用户添加到容器镜像中)将.devcontainer目录下的文件提交到源代码仓库,以便其他开发者可以使用容器定义进行开发工作。在容器内开发有助于通过隔离不同项目的依赖关系和代码来防止不同项目之间的冲突。您可以使用Podman在无根环境中运行容器以提高安全性。通过结合VSCode、“Remote-Containers”扩展和Podman,您可以轻松地为多个开发人员设置一致的环境,减少设置时间,并以安全的方式减少因开发环境差异而导致的错误。
