共享,临时只读Docker卷
我正在为基于Docker的设置工作,在Nginx + php-fpm中运行一个简单的Web应用程序。 我见过的用于存储实际PHP代码的常见build议是将其存储在主机上,然后在Nginx和PHP容器中以只读方式挂载。
不过,我希望我的设置是自包含的,因此我可以在Auto Scaling的Amazon ECS上轻松使用它。 换句话说,我想以某种方式捆绑代码,而不是把它从主机上拉出来。
所以看来我想要的只是一个可以在两个Docker容器之间共享的只读卷,并且在这些容器被销毁后不会保留。 这可能吗? 还是有更好的方法?
Docker映像可以包含预先填充数据的卷。 为此,在Dockerfile
,首先填充目录(例如使用COPY
或RUN
),然后将其声明为卷。 这使您可以在卷内构build包含应用程序代码的映像:
FROM php:7-fpm COPY ./app /var/www/html VOLUME /var/www/html
从这个图像创build一个新的容器将创build一个新的卷,使用图像的/var/www/html
目录中的数据进行初始化,并将其安装在新的容器中相同的位置。
比较文档以获取更多信息:
docker run命令用基础映像中指定位置存在的任何数据初始化新创build的卷。 例如,请考虑以下Dockerfile代码片段:
FROM ubuntu RUN mkdir /myvol RUN echo "hello world" > /myvol/greeting VOLUME /myvol
这个Dockerfile会生成一个导致docker
docker run
的图像,在/myvol
上创build一个新的挂载点,并将greeting
文件复制到新创build的卷中。
这使您可以使用docker run
来简单地启动应用程序映像:
docker run -d --name app my_application_image
然后,您可以运行Nginx容器,并使用--volumes-from
标志将其configuration为使用与应用程序容器相同的卷:
docker run -d --name web --link app:app --volumes-from app my_nginx_image
在此之后,您将拥有一个Docker卷,其中包含安装在两个容器中的应用程序代码,位于/var/www/html
。
- 在docker的CPU使用率计算是什么:TotalUsage,SystemUsage,PercpuUsage和计算是什么意思?
- 如何在构buildDockerfile时使用Docker机器的环境variables
- 如何使Secure Gateway Clientparsing目标主机的主机名
- 使用jenkins – build设环境
- 在Windows容器中运行Visual Studio远程debugging器(托pipe的Docker)
- 如何在销毁docker集装箱之前运行脚本?
- 如何代理泊坞窗容器端口+ http到一个子url?
- 一个应用程序 – >在单个Ec2上运行多个Docker实例
- Docker中的非root用户