## 第二章:掌握Docker数据卷
#### Docker容器数据卷
**容器存在的问题**
- 容器删除后,在容器中产生的数据默认也会被删除
- 容器与外部主机无法直接交换文件
- 容器与容器之间无法相互交换数据
**容器数据卷**
- 数据卷可以是宿主机中的一个目录或文件,通过将目录或文件挂载到容器中实现容器数据与宿主机数据立即同步
- 数据卷可以解决容器删除后容器数据丢失的问题,实现数据持久化
- 数据卷可以间接的将外部主机数据传输到宿主机目录,解决容器与外部主机之间数据交换的问题
- 一个数据卷目录可以同时挂载多个容器,解决多容器之间数据交换的问题
**配置数据卷**
> 在创建启动容器时,使用-v参数设置数据卷
>
> docker run 参数 -v 宿主机目录/文件:容器内目录/文件...
**注意事项**
> 1.目录必须是绝对路径
>
> 2.如果目录不存在,会自动创建
>
> 3.可以挂载多个数据卷
#### 配置容器数据卷
```shell
#创建容器并挂载数据卷
[root@localhost ~]# docker run -it --name=centos3 -v /root/test:/root/test_container centos:7 /bin/bash
#容器内查看数据卷目录
[root@8cf8fcdb6e52 /]# ls /root
anaconda-ks.cfg test_container
#验证数据同步,在宿主机数据卷目录创建文件
[root@localhost ~]# touch test/xxxx.txt
[root@localhost ~]# ls test/
xxxx.txt
#验证数据同步,容器查看数据是否同步
[root@8cf8fcdb6e52 /]# ls /root/test_container/
xxxx.txt
#验证数据同步,容器数据卷发生变化,宿主机也会立刻同步
[root@8cf8fcdb6e52 /]# touch /root/test_container/abc.txt
[root@8cf8fcdb6e52 /]# ls /root/test_container/
abc.txt xxxx.txt
#验证数据同步,宿主机验证数据是否同步
[root@localhost ~]# ls test/
abc.txt xxxx.txt
#退出并删除容器
[root@8cf8fcdb6e52 /]# exit
[root@localhost ~]# docker rm centos3
#宿主机验证数据卷目录数据是否存在
[root@localhost ~]# ls test/
abc.txt xxxx.txt
#重新创建容器,并将数据卷目录同步到容器中
[root@localhost ~]# docker run -it --name=centos3 -v /root/test:/root/test_container centos:7 /bin/bash
#容器验证数据是否同步
[root@9a48ae7d7eb3 /]# ls /root/
anaconda-ks.cfg test_container
[root@9a48ae7d7eb3 /]# ls /root/test_container/
abc.txt xxxx.txt
```
#### 容器挂载多个数据卷
```shell
#创建容器并同时挂载多个数据卷目录
[root@localhost ~]# docker run -it --name=centos4 \
> -v /root/test:/root/test \
> -v /root/test1:/root/test1 \
>