Data Volume
docker提供了两种类型的volume:bind mount和docker managed volume
bind mount
bind mount是将host上已经存在的目录或者文件mount到容器
通过-t将主机上的文件mount到容器中:
docker run -d -p 8080:80 -v ~/htdocs:/usr/local/apache2/htdocs httpd(容器名)
即便是容器删除了,数据还在,因为数据在host主机上,与容器无关。
可以指定数据的读写权限,默认是可读可写,可指定为只读。
ro:只读模式。在容器中无法对mount的数据进行修改,只有host主机有这个权限,提高了安全性。
除了mount目录,还可以单独指定一个文件:
使用bind mount单个文件的场景是:只需要向容器中添加文件,不希望覆盖整个目录。
使用场景:将源代码目录mount到容器中,在主机host下改代码就可以看到应用的实时效果。将mysql容器的数据放在mount中,这样host主机可以很方便的备份和迁移数据。
缺点是可移植性差。可以使用docker managed volume 改进。