我认为我有两难选择。我正在尝试创建一个Dockerfile来再现(ROS)一个漫长而复杂的安装过程,以便我的学生可以轻松地运行它。
我正在将各种脚本与已记录的手动步骤组合在一起。手动步骤通常说做“ sudo”,但是我被告知要避免在Dockerfile中执行sudo。所以我将这些步骤移至Dockerfile中的USER命令之前,因为有人告诉我这些命令以root身份运行。但是,结果是创建的文件和目录归root所有,我相信后续步骤都会失败。
我认为我有两个选择:将命令移至USER命令之后,并包含sudo或尝试使安装脚本创建正确所有权的目录和文件。当然,先验的我不知道将要创建什么文件和目录。
这是我的Dockerfile(实际上是我正在尝试的众多文件之一)。另外,如果您发现任何其他需要改进或修复的问题,请告诉我!
'123'
答案 0 :(得分:1)
对于我自己的信息来说,为什么在容器中避免使用sudo
会很有趣。
从历史上看,我们使用docker
来自动化团队中的构建,测试和部署流程,并且始终尝试编写与原始流程尽可能接近的Dockerfiles
。
让我们说,如果您在主机中构建了一些应用程序,并使用sudo
启动了某些命令,而有些却没有,我们设法创建了完全相同的Dockerfiles
。对此的积极反馈是,您不再有义务就如何构建代码编写readme's
-您只需提供Dockerfile
,并且只要有人想在非容器环境中重复所有步骤,他就可以从文件中遵循(复制/粘贴)命令。
所以我的建议是-首先在Dockerfile中安装软件包,然后切换到用户并继续所有剩余的步骤,必要时使用sudo
。您将拥有用户拥有的所有工件,而不是root
。
获得了原始的discussion和this。因此,听起来您是根据自己的具体情况和需求选择最佳方法的。