如何去查找某个镜像的DockerFile如何编写的,以tomcat为例
去dockerhub中搜索tomcat镜像,在文档页面对镜像都有很详细的说明
在DockerFile中使用VOLUME指令来给镜像添加一个或多个数据卷
VOLUME[“/containerData”,”/containerData2”,”/containerData3”]
说明:出于可移植和分享的考虑,用-v 主机目录:容器目录 这种方法不能够直接在DockerFile中实现(由于宿主机目录是依赖于特定宿主机的,并不能够保证在所有的宿主机上都存在这样的特定目录)
- 构建DockerFile文件,编写DockerFile的文件内容 ```shell
[linguo@VM-4-6-centos dockerFile]$ touch centos_volume_file [linguo@VM-4-6-centos dockerFile]$ vim centos_volume_file
DockerFile添加容器数据卷卷测试内容
FROM centos VOLUME [“containerData1”,”containerData2”] #添加两个数据卷 CMD echo “finish—success” CMD /bin/bash
解析成命令形式的大致意思如下(DockerFile是不支持主机路径的,只是描述一下): docker run -it -v /host1:/containerData1 -v /host2:/containerData2 centos /bin/bash
2. 编译DockerFile文件后生成一个新的镜像```shell[linguo@VM-4-6-centos dockerFile]$ docker build -f /home/linguo/dockerFile/centos_volume_file -t linguo/centos-dockerfile .[linguo@VM-4-6-centos dockerFile]$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZElinguo/centos-dockerfile latest 47e5e93b0f03 2 minutes ago 231MB[linguo@VM-4-6-centos dockerFile]$ docker run -it 47e5e93b0f03 /bin/bash[root@29eae239dbe6 /]# lsbin containerData1 containerData2 dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var生成一个镜像名为linguo/centos-dockerfile标签默认latest的镜像如果文件名为DockerFile可以不加 -f ,注意不要丢了最后的小数点
容器已经有了数据卷,那么对应宿主机的数据卷目录在哪呢?
可以通过查看容器运行的详情来查看,可以看到分配的宿主机路径
[linguo@VM-4-6-centos dockerFile]$ docker inspect 29eae239dbe6[{..."Mounts": [{"Type": "volume","Name": "ca6ac360d23b50e80eb1bbea37cc33f24ef2d6cb42fb24233c5b0d963c97566d","Source": "/var/lib/docker/volumes/ca6ac360d23b50e80eb1bbea37cc33f24ef2d6cb42fb24233c5b0d963c97566d/_data","Destination": "containerData2","Driver": "local","Mode": "","RW": true,"Propagation": ""},{"Type": "volume","Name": "641a2dbc69d2c658a3f742206a0e1a3361b74f490c7c3456e0083f1ba07afbce","Source": "/var/lib/docker/volumes/641a2dbc69d2c658a3f742206a0e1a3361b74f490c7c3456e0083f1ba07afbce/_data","Destination": "containerData1","Driver": "local","Mode": "","RW": true,"Propagation": ""}],...}]
