从Dockerfile构build目录时是否可以挂载一个目录?

我正在尝试使用Dockerfile方法构buildDocker镜像。 最小化图像的大小和层数对于这个特定的应用程序是非常重要的。 然而,安装所需的rpm相当大,我不想把它烧成图像。 看起来,如果我在Dockerfile中使用ADD命令,那么rpm将被复制到图像中作为它自己的图层,并且在完成使用后无法将其删除。 为了解决这个问题,我们只是在交互模式下运行一个容器,使用-v卷装入选项来共享包含rpm的文件夹,但实际上并没有将rpm复制到容器中。 是否有任何方法来执行像-v选项一样运行docker build命令与Dockerfiles?

同事想出的方法是使用docker rundocker commit

 docker run --name=$name --volume=$PWD/ToInstall/:/scratch --workdir=/scratch centos /scratch/install-script.sh echo Status is $(docker wait $name) echo docker commit $name myname-base docker rm -f $name 

install-script.sh会像这样:

 set -eux rpm -i myrpm1.rpm rpm -i myrpm2.rpm rm -rf /something-else-you-want-removed-from-layer 

再见!

当你把RPM文件放在与你的Dockerfile相同的文件夹中时,你可以从你的文件中访问它:

 YourFolder |---- Dockerfile |---- ToInstall |---- rpm_1.rpm |---- rpm_2.rpm 

现在你可以在你的Dockerfile中运行一个命令:

 RUN rpm -i /ToInstall/rpm_1.rpm