Dockerfile最佳实践为apt-get update
用法提供了以下建议:
始终将RUN apt-get update与apt-get install组合在同一个RUN语句中。
我是否也应该对pip install-u pip
使用相同的规则?例如。DockerFile中的哪一个实践更好:
# Separate statements
RUN pip install -U pip
RUN pip install opencv-python==4.4.0.46
# Single statement
RUN pip install -U pip && pip install opencv-python==4.4.0.46
Dockerfile最佳实践的优点是尽可能地删除缓存。对于pip
,这意味着使用--no-cache-dir
选项或在安装后显式删除缓存。
RUN pip install -U --no-cache-dir pip \
&& pip install --no-cache-dir opencv-python==4.4.0.46
关于apt-get update和&apt-get install...
的建议实际上并不适用于PIP
。Apt依赖于apt-get update
下载的一些文件,好的做法是在任何apt-get install
之后删除这些文件。这样可以减小Docker图像大小。
问题内容: 我正在尝试编写一个docker文件,该文件将运行RUN命令以在package.json文件中搜索单词并对其执行操作: 这是我简单的dockerfile: 如您所见,我只想要一个简单的if语句,但它得到此错误: 我应该如何运行命令?谢谢。 问题答案: 就像在shell上键入内容一样,您需要在前面加上换行符或分号:
与手动使用Docker run相比,使用Dockerfile在Docker中发布的端口有问题。使用以下命令,Docker容器成功启动,当我使用http://192.168.99.100:8080- 访问浏览器中的主机IP地址(192.168.99.100)时,RabbitMQ Web管理仪表板加载。 此时,我运行以下操作以从DockerFile中释放我要使用的端口: 当我运行下面的docker-c
问题内容: 我有一个Dockerfile,我正在将其安装在一起以安装Vanilla python环境(稍后将在其中安装应用程序)。 构建运行正常,直到最后一行,我得到以下异常: 如果我进入该目录(只是为了测试是否已完成前面的步骤),我可以看到文件按预期存在: 如果我尝试仅运行命令,则会收到与上述相同的“未找到”错误。但是,如果我运行交互式shell会话,则源代码确实可以工作: 我可以从这里运行脚本
我有一个Dockerfile,我将把它放在一起安装一个vanilla python环境(我将在其中安装一个应用程序,但以后再安装)。 构建运行正常,直到最后一行,我得到以下异常: 从Dockerfile运行指令运行shell脚本的最佳方法是什么来解决这个问题(我运行Ubuntu12.04LTS的默认基本映像)。
问题内容: 我对何时应该使用vs 感到困惑。例如,要执行bash / shell命令(即),我将始终使用它,或者是否存在我会使用的情况?试图了解有关这两个类似指令的最佳实践。 问题答案: RUN是映像构建步骤,命令后将容器的状态提交到容器映像。一个Dockerfile可以有很多步骤相互叠加以构建映像。 CMD是启动构建映像时容器默认执行的命令。Dockerfile将仅使用最终定义的。使用启动容器时
我很困惑什么时候应该使用和。例如,要执行bash/shell命令(即),我将始终使用,或者是否存在使用的情况?试图理解关于这两个类似的指令的最佳实践。