从Dockerfile构建时是否可以挂载目录?

时间:2014-06-19 17:29:39

标签: docker

我正在尝试使用Dockerfile方法构建Docker镜像。最小化图像大小和层数对于此特定应用非常重要。但是,安装所需的转速相当大,我不想将其烘焙到图像中。似乎如果我在Dockerfile中使用ADD命令,rpm会被复制到图像中作为自己的图层,并且在我使用它之后无法将其删除。为了解决这个问题,我们只是在交互模式下使用-v volume mount选项运行容器来共享包含rpm的文件夹,但实际上并没有将rpm复制到容器中。有没有办法在使用Dockerfiles运行docker build命令时执行类似-v选项的操作?

2 个答案:

答案 0 :(得分:2)

同事提出的方法是使用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

侨!

答案 1 :(得分:0)

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

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

现在您可以在Dockerfile中运行命令:

RUN rpm -i /ToInstall/rpm_1.rpm