一、建立、挂载数据卷
1. 建立宿主机本地datat目录下的docker_test作为容器存放数据目录的路径,进行目录映射
语法:docker run -itd -v /【宿主机目录】/:/【容器目录】/ 【镜像名称】 bash
说明:-v 用来指定挂载目录,:前面的/data/为宿主机本地目录,:后面的/data/为容器里的目录,会在容器中自动创建
[root@host1 ~]# docker run -tid -v /data/docker_data/:/data/ centos bash
904948dca04f3b4bbebc0fe1fc1160d17c9cef11e5f6bc4b23617b322d73f8d3
ps查看创建的容器,名称amazing_visvesvaraya
[root@host1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
904948dca04f centos "/bin/bash" 7 seconds ago Up 6 seconds amazing_visvesvaraya
进入创建的容器查询是否成功
[root@host1 ~]# docker exec -it 904948dca04f bash
[root@904948dca04f /]# ls data/
1.txt 3.txt test.txt
2: 映射目录后,创建新的容器挂载数据卷
语法:docker run -itd --volumes-from 【映射了的容器名称】 【镜像名称】bash
说明:挂载目录的时候,可以指定容器name,如果不指定就随机定义了。上面没有指定,随机生成了一个名字为amazing_visvesvaraya,docker ps 查看看最右侧一列这样,使用镜像centos_test2创建了新的容器,并且使用了amazing_visvesvaraya容器的数据卷
[root@host1 ~]# docker run -itd --volumes-from amazing_visvesvaraya centos_test2 bash
810ff9bebe6dc767308aac49b9b61d0e113b441ee88002373899afbe468113bb
进入创建的容器查询是否成功
[root@host1 ~]# docker exec -it 810ff9beb bash
[root@810ff9bebe6d /]# ls data/
1.txt 3.txt test test.txt
3:建立容器中的NFS数据卷,共享其它容器使用
语法:docker run -itd -v /【容器的路径】/ -name 【定义容器名称】【镜像名称】 bash
说明:在众多容器中,我们需要多个容器之间相互共享数据,类似于linux里面的NFS,所以就可以搭建一个专门的数据卷容器,然后其他容器直接挂载该数据卷。注意-V后面的路径是容器的路径,并非宿主机的路径。
[root@host1 ~]# docker run -itd -v /data/ --name testvol centos bash
46f89904218d8c1a6f56ac167cef6c3b713c251b6c118532425f72da1f1c2c47
[root@host1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
46f89904218d centos "bash" 6 seconds ago Up 5 seconds testvol
810ff9bebe6d centos_test2 "bash" About an hour ago Up About an hour youthful_noyce
904948dca04f centos "/bin/bash" 5 hours ago Up 5 hours amazing_visvesvaraya
说明:以上操作完成后,然后让其他容器挂载该数据卷共享使用
[root@host1 ~]# docker run -itd --volumes-from testvol centos bash