泊坞窗图像可以包含预先填充数据的卷。要达到此目的,请在Dockerfile
中首先填充目录(例如,使用COPY
或RUN
),然后将其声明为卷。这使您可以构建一个包含体积内的应用程序代码的图像:
FROM php:7-fpm
COPY ./app /var/www/html
VOLUME /var/www/html
创建从该图像的新容器将创建一个新卷,从图像的/var/www/html
目录中的数据初始化和内部挂载你的新容器在同一个位置。
比较the documentation的详细资料:
的搬运工运行命令初始化与存在于基本图像内的指定位置的任何数据新创建的卷。例如,请考虑以下Dockerfile片段:
FROM ubuntu
RUN mkdir /myvol
RUN echo "hello world" > /myvol/greeting
VOLUME /myvol
这Dockerfile结果导致docker run
图像中,在/myvol
创建一个新的安装点和greeting
文件复制到新创建的卷。
这可以让你简单地docker run
启动应用程序图像:
docker run -d --name app my_application_image
然后你可以运行Nginx的容器,并配置它使用--volumes-from
标志使用相同的体积为您的应用程序容器:
docker run -d --name web --link app:app --volumes-from app my_nginx_image
之后,您将拥有一个Docker卷,其中包含您的应用程序代码,该代码安装在两个容器中,位于/var/www/html
。
但是,这是否涵盖了我的问题的“短暂”部分?根据我的理解,这种方法会在我的容器终止后留下孤立的卷,这是我希望避免的。 – phu
容器的容量应该和容器一起删除,至少在使用['--volumes'或'-v'标志]时(https://docs.docker.com/engine/reference/commandline/rm/# /选项)。 – helmbert