在开发中使用容器
容器为构建和测试代码提供轻量且可复现的环境。当项目依赖特定工具链版本或服务时,容器尤其有用。
快速示例:用于 C 构建的 Dockerfile
Section titled “快速示例:用于 C 构建的 Dockerfile”FROM ubuntu:24.04RUN apt update && apt install -y build-essential cmake gitWORKDIR /srcCOPY . /srcRUN mkdir -p build && cd build && cmake .. && cmake --build .运行容器并挂载源代码以便迭代开发:
docker build -t myproj:dev .docker run --rm -it -v "$PWD":/src -w /src myproj:dev bashPodman 与无 root 容器
Section titled “Podman 与无 root 容器”Podman 在许多系统上可作为 Docker 的替代方案,并默认支持无 root 容器。可用 podman build 与 podman run 来执行相同的 Dockerfile。
- 在 CI 中使用容器镜像作为可复现的构建器。
- 在开发中使用数据卷(volume)以加速编辑 / 构建循环。
- 保持镜像精简并优化缓存以加速镜像构建。
为什么这很重要
Section titled “为什么这很重要”这个主题是构建可靠 Linux 开发流程的重要组成部分。对它有清晰的理解,会让后续任务变得更容易,因为你能更快地判断某一步是否缺失或使用不当。
- 在安全的测试环境中尝试这里展示的命令和配置。
- 比较这些概念在不同发行版或工具之间的适用差异。
- 记下一次实践中哪些步骤成功,哪些失败,这样下次遇到问题时更容易定位。
- 将这篇文章与系列中相关内容结合起来,加深整体理解。
- 跳过验证步骤,默认系统已经配置正确。
- 不对命令中的路径、软件包名称或工具版本进行适配,直接复制粘贴执行。
- 把这个主题当成孤立的技巧,而不是整个开发流程的一部分。
容器开发的最佳实践
Section titled “容器开发的最佳实践”使用容器进行开发时,应把容器定义和构建命令纳入版本控制。将 Dockerfile 或 Containerfile 与项目一起提交,能够让环境对你自己以及协作者都保持可复现。
避免把整个主机的 home 目录挂载到容器里。更好的做法是只挂载项目目录,并把缓存或工具配置等持久化状态放到明确的位置。
- 选择用于日常开发的容器镜像过大。应从小基础镜像开始,只安装实际需要的包。
- 挂载卷时忽略文件权限问题,尤其是容器内运行用户与主机用户不一致时。
- 修改了
Dockerfile之后忘记重新构建镜像,只单纯运行容器而不更新环境。
为什么容器对开发有帮助
Section titled “为什么容器对开发有帮助”容器将构建环境与宿主机隔离开。这在你希望在不同机器上复现相同工作流,或者依赖版本不一致会导致项目不可复现时,特别有帮助。