bind mount
docker pull httpd #拉取一个镜像
docker run -d -v /web:/usr/local/apache2/htdocs httpd:latest #运行该镜像
只要是绝对路径对无论目录不存在dockers也会自行创建,并覆盖容器中的内容造成容器中的内容丢失
volume
volume也是绕过container的文件系统,直接将数据写到host机器上,只是volume是被docker管理的
docker pull httpd #拉取一个镜像
docker run -d -v web:/usr/local/apache2/htdocs httpd:latest #运行该镜像
docker commit -m "index hello" httpd httpd:v2 #保存成镜像
web为非绝对路径而是一个volume,如果该volume不存在docker会自行创建,并且容器中的内容将被复制到该volume里,故不会造成数据丢失
如果我们运行容器的时候不指定volume, docker将为容器创建一个匿名卷挂载:
docker run -itd --name mysql1 -v /var/lib/mysql/ centos-mariadb
具体挂在位置可以使用docker inspect containerID 进行查看mounts
如果该volume中有内容存在会将其覆盖!