Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 加速基于容器(开发)环境的最佳实践_Docker_Podman - Fatal编程技术网

Docker 加速基于容器(开发)环境的最佳实践

Docker 加速基于容器(开发)环境的最佳实践,docker,podman,Docker,Podman,OCI容器是为项目打包合适的工具链的一种方便方式,这样开发环境是一致的,新的项目成员只需签出项目并拉取相关容器即可快速启动 当然,我并不是在谈论那些只需要C++编译器或NoDE.js的项目。我指的是需要特定编译器包的项目,这些编译器包不适用于比Fedora 22更新的版本;需要手动将特殊工具安装到陌生位置的项目;需要使用不可同时安装的工具的多个项目等等。对于这类事情,拥有一个容器要比遵循二十个安装步骤,然后祈祷上一个项目留下的碎片不会破坏你的东西更容易 但是,使用编译器启动容器以构建项目需要

OCI容器是为项目打包合适的工具链的一种方便方式,这样开发环境是一致的,新的项目成员只需签出项目并拉取相关容器即可快速启动

    当然,我并不是在谈论那些只需要C++编译器或NoDE.js的项目。我指的是需要特定编译器包的项目,这些编译器包不适用于比Fedora 22更新的版本;需要手动将特殊工具安装到陌生位置的项目;需要使用不可同时安装的工具的多个项目等等。对于这类事情,拥有一个容器要比遵循二十个安装步骤,然后祈祷上一个项目留下的碎片不会破坏你的东西更容易
但是,使用编译器启动容器以构建项目需要(或)命令行上的许多选项。除图像名称外,通常:

  • 装载项目工作目录
  • 用户id(因为容器应该以运行它的用户的身份访问装载的文件)
  • 如果该工具需要访问某些网络资源,则可能还需要
    • 通过环境或其他方式提供一些凭据
    • ssh代理套接字(装载和环境变量)
  • 如果构建过程涉及构建docker容器
    • docker插座(安装);但在没有特殊设置的情况下也可以工作
  • 如果是图形工具(例如IDE)
    • X套接字安装和环境变量
    • ——ipc主机
      使共享内存工作
再加上其他因素,情况会变得更加复杂。例如,如果开发人员在不同的部门,并且没有访问同一docker存储库的权限,那么他们的映像可能会被不同的调用,因为不支持存储库的符号名称(尽管如此)

是否有一些标准(ish)方法来处理这些选项,或者每个人都只是使用临时包装脚本?

我使用它将源代码连接到一个Docker容器,该容器包含构建代码所需的所有工具(例如
npm
模块、ruby
gems
eslint
、Node.JS、
java
)。容器包含用于开发/构建/测试源代码的所有“工具”

此外,您还可以将VSCode扩展放入Docker映像中,以帮助保持VSCode IDE工具的可移植性。

您可以在源代码中为新来者提供Dockerfile,或将VSCode附加到源代码

如果出于测试目的需要在Docker容器内运行服务器,可以通过VSCode,并开始使用浏览器或主机上的
cURL
访问容器内的服务器


请注意Visual Studio代码远程容器扩展。对我影响最大的是。我经常注意到一些流行的Docker Hub图像是基于Alphine的。

观点:Docker不是打包面向桌面的应用程序或开发人员工具的好工具。如果需要节点,请安装节点;不要只是为了“安装”你需要的工具而浏览整个清单。@DavidMaze,这有两个主要问题:1。不同的项目需要相同工具的不同版本,通常是古老的,以及2。当然,它不是一个单一的工具,而是一个包含20个依赖项的列表,不是所有依赖项都可以从一个包中安装。docker清单要短得多。请记住,包装器脚本只编写一次,每个人都会使用,但安装说明将每隔一个月由某人运行一次。FWIW,我使用
visualstudio code Remote-Containers
扩展将代码库所需的工具链放入Docker映像中。这个扩展仍然是新的,所以对于什么样的Linux发行版可以用于docker映像的基础是有限制的@Kin,这可能是一个有意义的答案VSCode很可能很快让它流行起来。他们的方法是启动一个持久容器,其中包含无限睡眠作为主命令,并在其中执行命令,但它可能比我开始使用的临时容器更有意义,特别是因为一些开发工具启动后台进程。远程容器还支持docker compose,这使得任何不想使用vscode的人都可以从命令行轻松地使用容器。它不太远程,如果vscode希望docker在本地运行。我和波德曼试过了,但没有成功。如有任何建议,将不胜感激。