在Docker容器中安装应用程序,只有当它之前没有安装?

有没有办法在docker容器中安装任何应用程序,只有当它之前没有安装?

例如;

RUN apt-get install -y nginx 

将每次安装nginx一个新的重build。 如何检查nginx是否已经存在? 如果不安装其他只是更新或什么都不做。 这是可能的吗? 我有充分的理由需要另一个容器内的nginx现在得到的东西,以后运行可以移动到分离nginx自己的容器。

默认情况下,Docker将保存每个构build步骤。 所以,无论何时你重新构build你的镜像,如果你在相同的状态下做同样的事情,Docker将检查它的caching并使用caching。

正如@jordanm所说, yumapt-get也会检查已经安装的应用程序。 所以,如果你做yum install nginx两次,它不会重新安装nginx(只要你不告诉yumapt-get重新安装nginx)。