Dockerfile:运行本地安装程序脚本的最佳方法?

Dockerfile:运行本地安装程序脚本的最佳方法?,docker,dockerfile,Docker,Dockerfile,我有一个YoctoLinux toolchain安装程序脚本toolchain.sh。如果我运行它,它会将一堆交叉编译器安装到/opt。对于预制作的docker图像,我可以用什么方法来实现这一点?到目前为止,我已经做到了: ADD ./toolchain.sh /opt RUN yes | /opt/toolchain.sh RUN rm -f /opt/toolchain.sh 这似乎是可行的,但似乎效率低下,因为现在我的图像中安装程序和未打包的工具链都占用了更多的空间 有没有办法做到这一点

我有一个YoctoLinux toolchain安装程序脚本toolchain.sh。如果我运行它,它会将一堆交叉编译器安装到/opt。对于预制作的docker图像,我可以用什么方法来实现这一点?到目前为止,我已经做到了:

ADD ./toolchain.sh /opt
RUN yes | /opt/toolchain.sh
RUN rm -f /opt/toolchain.sh
这似乎是可行的,但似乎效率低下,因为现在我的图像中安装程序和未打包的工具链都占用了更多的空间

有没有办法做到这一点而不占用不必要的空间?

限制您的图层:

ADD ./toolchain.sh /opt

RUN yes | /opt/toolchain.sh && \
  rm -f /opt/toolchain.sh
这确保了您不会为toolchain.sh创建额外的层,因为您将删除它,它只会为docker图像创建额外的大小

如果您感到好奇,这就是为什么人们不在DockerFile中使用多个run语句,而是使用&&\创建大型的一行程序,并尝试将它们分开以获得更好的可读性

除此之外,您所做的是完全有效的,并且是为docker设计的-无需担心