命令:在容器启动运行时加上 -v /宿主机绝对路径目录:/容器内目录
命令(带权限):在容器启动运行时加上 -v /宿主机绝对路径目录:/容器内目录:ro
ro是readonly只读的缩写,加上之后表示容器内的数据卷只能读不能写,读的是宿主机共享过来的
可能遇到的异常:
描述:cannot open directory..Permission denied
解决: -v /宿主机绝对路径目录:/容器内目录后面追加 —privileged=true
示例:
[linguo@VM-4-6-centos ~]$ docker run -it -v /home/linguo/hostTomcatData:/data/containerTomcatData centos[linguo@VM-4-6-centos ~]$ docker run -it -v /home/linguo/hostTomcatData:/data/containerTomcatData:ro centos[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
