泊塢窗圖像可以包含預先填充數據的卷。要達到此目的,請在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