1.简介
数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有 用的特性:
数据卷可以在容器之间共享和重用 对数据卷的修改会立马生效对数据卷的更新,不会影响镜像 数据卷默认会一直存在,即使容器被删除
2.创建一个数据卷
docker run -v 数据卷
在使用docker run 命令时带上 -v参数就可以指定挂载的数据卷
# docker run -it --name hello-c1 -v /yyf centos /bin/bash
# ls
bin dev etc home lib lib64 lost+found media mnt opt var yyf ...
#在容器中有 /yyf这个目录
echo "yyf" >> /yyf/yyf.txt
ll /var/lib/docker/volumes/ #在实际主机中
total 24
drwxr-xr-x 3 root root 19 Nov 12 02:45 37dbfde6ceb0456bdac24b183d98f914db6e4fb1c37a55af4bf8a3f487ae32ff
# ll /var/lib/docker/volumes/37dbfde6ceb0456bdac24b183d98f914db6e4fb1c37a55af4bf8a3f487ae32ff/_data/
total 4
-rw-r--r-- 1 root root 4 Nov 12 02:48 yyf.txt
在主机的/var/lib/docker/volumes/中生成了对应文件
说明 -v 将/var/lib/docker/volumes 目录加载成了了容器指定的目录
3.删除数据卷
可以在删除容器的时候使用docker rm -v这个命令。
4.直接映射本地目录
docker run -it --name centos-v1 -v /tmp/centos:/opt/webapp centos /bin/bash
ls /opt/
webapp
[root@2a38fdbb6385 /]#echo $HOSTNAME > /opt/webapp/$HOSTNAME.conf #在容器内创建文件夹
[root@2a38fdbb6385 /]# exit
exit
[root@kube-1 tmp]# echo $HOSTNAME > /tmp/centos/$HOSTNAME.conf #在宿主机创建文件夹
[root@kube-1 centos]# ls /tmp/centos/
2a38fdbb6385.conf kube-1.conf
[root@kube-1 centos]# docker exec -it centos-v1 bash
[root@2a38fdbb6385 /]# ls /opt/webapp/
2a38fdbb6385.conf kube-1.conf
在对应被映射的目录生成了文件夹
创建新的容器
[root@kube-1 centos]# docker run -it --name centos-v2 -v /tmp/centos:/opt/webapp centos /bin/bash
[root@a6f856dbe6e4 /]# echo $HOSTNAME > /opt/webapp/$HOSTNAME.conf
[root@a6f856dbe6e4 /]# ls /opt/webapp/
2a38fdbb6385.conf a6f856dbe6e4.conf kube-1.conf
发现他们可以共享对方创建的文件夹,也可以对相互创建的文件修改,删除
5通过docker inspect 查看对应的挂载信息**
docker inspect hello-c1
...
"Mounts": [
{
"Type": "bind",
"Source": "/tmp/centos",
"Destination": "/opt/webapp",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
...
如果你有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器。
数据卷容器,其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的。