Dockerfile中volume功能作用
一 dockerfile的volume
1.1.Dockerfile中volume作用
Volume可以使得多个容器共享数据;即我们可以在宿主机上创建一个目录与容器的某个目录(称为挂载点、或者叫卷)关联起来,容器上的挂载点下的内容就是宿主机的这个目录下的内容。
1.2.方式1通过docker run命令创建挂载点
1查看镜像
2.创建容器,用tomcat:7这个镜像来启动容器并且创建挂载点:
https://www.cnblogs.com/Json1208/p/8975403.html
docker run是启动容器命令; -d代表后台运行; -P代表端口自动帮我们绑定; --name tomcat代表将启动的容器命名为tomcat; -v标记在容器中设置了一个挂载点 /usr/local/data(就是容器中的一个目录),并将主机上的 /home/env/containerdata 目录中的内容关联到/usr/local/data下。 |
3.案例操作
3.1 容器启动后,先查看宿主机/home/env目录下是否有一个containerdata
3.2宿主机已存在该目录,接着我们进入容器内部,查看是否生成/usr/local/data目录:
3.3不管宿主机或容器内部,都自动创建了目录,接着我们在宿主机创建一个abc文件,再来查看下容器内是否同步了abc文件:
3.4在启动容器时设置挂载点也可以不指定宿主机的目录,这时docker会自动绑定主机上的一个目录:
通过docker inspect 容器命令可以查看到挂载的目录
3.5 上面 Mounts下的每条信息记录了容器上一个挂载点的信息,"Destination" 值是容器的挂载点,"Source"值是对应的主机目录,查看宿主机是否存在该目录:
1.3.方式2通过dockerfile创建挂载点
通过dockerfile的 VOLUME 指令可以在镜像中创建挂载点,这样只要通过该镜像创建的容器都有了挂载点,但值得注意的是通过 VOLUME 指令创建的挂载点,无法指定主机上对应的目录,而是自动生成的
1编写dockerfile
#base image FROM centos #MAINTAINER,this dockerfile creater MAINTAINER loose@docker.com #VOLUME,指定挂在目录 VOLUME ["/usr/local/data1"] |
2.其次,通过该dockerfile构建镜像:
3.启动容器
4.根据容器查看挂载信息
在dockerfile中VOLUME可以指定多个挂在目录,即["/usr/local/data1","/usr/local/data2"]代表这两个目录都会挂在到宿主机的自动生成的目录。