- 目录挂载(容器数据卷操作)
我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而影响容器,而且这个操作是双向绑定的,也就是说容器内的操作也会影响到宿主机,实现备份功能。
但是容器被删除的时候,宿主机的内容并不会被删除。如果多个容器挂载同一个目录,其中一个容器被删除,其他容器的内容页不会受到影响
容器与宿主机之间的数据卷属于引用的关系,数据卷是从外界挂载到容器内部中的,所以可以脱离容器的生命周期而独立存在,正是由于数据卷的生命周期并不等同于容器的生命周期,在容器退出或者删除以后,数据卷仍然不会受到影响,数据卷的生命周期会一直持续到没有容器使用它为止
创建容器添加 -v参数,格式为 宿主机:容器目录,例如
docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
#多目录挂载
docker run -di -v /宿主机目录:/容器目录 -v/宿主机目录2:/容器目录 镜像名
目录挂载操作可能会出现权限不足的提示。这是因为centos7中的安全模块SELinux把权限禁掉了,在docker run时通过-privileged=true给该容器加权限来解决挂载的目录没有权限的问题
- 匿名挂载
匿名挂载只需要写容器目录即可,容器外对应的目录会在/var/lib/docker/volumes中生成
#匿名挂载
docker run -di -v /usr/local/data --name centos7-02 centos:7
#查看 volume数据卷信息
docker volume ls
docker run -di -v docker_nginx_data:/usr/local/data --name nginx06 nginx
docker run -di --name nginx07 -P -v /mydata/docer_nginx/:/abc:ro nginx
docker run -di --name nginx08 -P -v /mydata/docker_nginx/:/abc:rw nginx
docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
#容器centos7-04 和centos7-05相当于继承centos7-01容器挂载的目录
docker run -di --volumes-from centos7-01 --name centos7-04 centos:7
docker run -di --volumes-from centos7-01 --name centos7-05 centos:7