docker 数据卷目的是实现宿主机和容器,容器与容器之间数据共享node
特色:python
数据双向共享,改变任何一方其余都会改变nginx
容器停掉或删掉不会影响宿主机数据,保证了数据的持久化和安全性,是复制属性docker
若是仅仅容器之间数据共享,则全部容器删除数据也就没了,但只要有一个,数据就还在centos
支持映射多个目录,加多个-v便可tomcat
1.查看数据卷映射信息安全
docker volume ls [root@python-node01 ~]# docker volume ls DRIVER VOLUME NAME local portainer_data
2.挂载的方式ide
# 1. 匿名挂载:只指定容器里的路径,不指定宿主机路径,默认会根据配置放到宿主机指定位置 docker -d --name test01 -v /container_path nginx # 经过查看容器详细,可找到挂载到宿主机位置 docker inspect 容器id # 2. 具名挂载:就是指定宿主机目录名字,默认在/var/lib/docker/volumes/名字 docker -d --name test02 -v 设定宿主机目录名字不是路径:容器路径 nginx # 可经过docker volume inspect 查看目录挂载的详细信息 docker volume inspect 宿主机目录名字 # 3. 路径挂载 docker -d --name test03 -v 宿主机映射路径:容器映射路径 镜像名或id # 扩展设定容器路径的容器里使用该目录的权限,如只读ro或可读写rw,默承认读写,在宿主机不受限制 docker -d --name test04 -v /temp/test04:/container_path:ro
3.宿主机与容器映射同步code
# 1. 启动容器时直接使用 docker run -d --name 自定义容器名 -p 宿主机端口:容器端口 -v 宿主机映射路径:容器映射路径 镜像名或id # 2. 经过dockerfile实现,内容以下 FROM centos # 容器内目录挂载,默认在容器根目录下建立,以下面容器里挂载2个目录,下面为匿名挂载,没有指定外部路径 # 缺陷只能匿名挂载,无法指定宿主机路径 volume ["volume01","volume02"]
4.容器与容器映射同步继承
# 启动第一个容器 docker -d --name container01 -v /home/testpath:/container_path tomcat # 启动第二个容器,并继承第一个容器的映射,由于继承因此第二个都不须要指定映射目录 docker -d --name container02 --volumes-from container02 tomcat # 并不会因第一个容器删除,其余容器的数据丢失,备份机制