命令:在容器启动运行时加上 -v /宿主机绝对路径目录:/容器内目录
    命令(带权限):在容器启动运行时加上 -v /宿主机绝对路径目录:/容器内目录:ro
    ro是readonly只读的缩写,加上之后表示容器内的数据卷只能读不能写,读的是宿主机共享过来的
    可能遇到的异常:
    描述:cannot open directory..Permission denied
    解决: -v /宿主机绝对路径目录:/容器内目录后面追加 —privileged=true
    示例:

    1. [linguo@VM-4-6-centos ~]$ docker run -it -v /home/linguo/hostTomcatData:/data/containerTomcatData centos
    2. [linguo@VM-4-6-centos ~]$ docker run -it -v /home/linguo/hostTomcatData:/data/containerTomcatData:ro centos
    3. [linguo@VM-4-6-centos ~]$ docker run -it -v /home/linguo/hostTomcatData:/data/containerTomcatData --privileged=true centos

    验证数据卷是否挂在成功,查看容器运行的详细信息可观察到容器卷的绑定关系

    [linguo@VM-4-6-centos ~]$ docker inspect 69701504837c
    [
        {
            ...
            "HostConfig": {
                "Binds": [
                    "/home/linguo/hostTomcatData:/data/containerTomcatData"
                ],
                "ContainerIDFile": "",
                "LogConfig": {
                    "Type": "json-file",
                    "Config": {}
                }
             ...
            "Mounts": [
                {
                    "Type": "bind",
                    "Source": "/home/linguo/hostTomcatData",
                    "Destination": "/data/containerTomcatData",
                    "Mode": "",
                    "RW": true,  容器是否可以读写数据卷
                    "Propagation": "rprivate"
                }
            ],
            ...
       }
    ]
    

    验证容器和宿主机之间的数据共享,符合特点:1.数据卷可在容器之间共享或重用数据2.卷中的更改可以直接生效

    1.在宿主机新建文件,验证容器是否存在该文件
    [linguo@VM-4-6-centos hostTomcatData]$ sudo touch host.txt
    [linguo@VM-4-6-centos hostTomcatData]$ ls
    host.txt
    [root@69701504837c containerTomcatData]# ls
    host.txt
    2.在容器内新建文件,验证宿主机是否存在该文件
    [root@69701504837c containerTomcatData]# touch container.txt
    [root@69701504837c containerTomcatData]# ls
    container.txt  host.txt
    [linguo@VM-4-6-centos hostTomcatData]$ ls
    container.txt  host.txt
    

    验证容器停止退出后,宿主机修改后的数据是否同步,符合特点:1.数据卷可在容器之间共享或重用数据2.卷中的更改可以直接生效

    1.停止容器运行
    [linguo@VM-4-6-centos hostTomcatData]$ docker ps
    CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
    69701504837c   centos    "/bin/bash"   24 minutes ago   Up 24 minutes             vigilant_haibt
    [linguo@VM-4-6-centos hostTomcatData]$ docker stop 69701504837c
    69701504837c
    [linguo@VM-4-6-centos hostTomcatData]$ docker ps
    CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
    [linguo@VM-4-6-centos hostTomcatData]$ 
    2.宿主机新建文件
    [linguo@VM-4-6-centos hostTomcatData]$ touch test_exit_container.txt
    [linguo@VM-4-6-centos hostTomcatData]$ ls
    container.txt  host.txt  test_exit_container.txt
    3.重启启动容器并验证是否同步
    [linguo@VM-4-6-centos hostTomcatData]$ docker ps -n 1
    CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                     PORTS     NAMES
    69701504837c   centos    "/bin/bash"   26 minutes ago   Exited (0) 2 minutes ago             vigilant_haibt
    [linguo@VM-4-6-centos hostTomcatData]$ docker start 69701504837c
    69701504837c
    [linguo@VM-4-6-centos ~]$ docker attach 69701504837c
    [root@69701504837c /]# ls data/containerTomcatData/
    container.txt  host.txt  test_exit_container.txt