Pre
数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:
- 数据卷 可以在容器之间共享和重用
- 对 数据卷 的修改会立马生效
- 对 数据卷 的更新,不会影响镜像
- 数据卷 默认会一直存在,即使容器被删除
数据卷 的使用,类似于 Linux 下对目录或文件进行 mount,镜像中的被指定为挂载点的目录中的文件会复制到数据卷中(仅数据卷为空时会复制)。
docker volume
https://docs.docker.com/engine/reference/commandline/volume_create/
基本操作
# 创建数据卷 [root@VM-0-7-centos ~]# docker volume create artisan artisan # 查看所有的 数据卷 [root@VM-0-7-centos ~]# docker volume ls DRIVER VOLUME NAME local artisan [root@VM-0-7-centos ~]# 查看指定 数据卷 的信息 [root@VM-0-7-centos ~]# docker volume inspect artisan [ { "CreatedAt": "2021-10-06T23:42:22+08:00", "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/artisan/_data", "Name": "artisan", "Options": {}, "Scope": "local" } ] [root@VM-0-7-centos ~]# [root@VM-0-7-centos ~]#
挂载一个主机目录作为数据卷
步骤
- 在主机的 /root 目录下新建一个文件夹 artisan
- 命令 docker run -it -v 主机目录: 容器内目录
- 将主机上的 /root 文件夹下面的artisan的文件夹与容器内的home文件夹绑定
[root@VM-0-7-centos ~]# pwd /root [root@VM-0-7-centos ~]# [root@VM-0-7-centos ~]# [root@VM-0-7-centos ~]# [root@VM-0-7-centos ~]# [root@VM-0-7-centos ~]# [root@VM-0-7-centos ~]# mkdir artisan [root@VM-0-7-centos ~]# [root@VM-0-7-centos ~]# [root@VM-0-7-centos ~]# docker run -it -v /root/artisan:/home centos /bin/bash [root@b7424d27ae0f /]# [root@b7424d27ae0f /]# [root@b7424d27ae0f /]# 容器内的 home 文件夹 [root@b7424d27ae0f /]# cd /home [root@b7424d27ae0f home]# ls [root@b7424d27ae0f home]# [root@b7424d27ae0f home]# [root@b7424d27ae0f home]# # 切到宿主机上,/root/artisan目录 [root@VM-0-7-centos ~]# cd /root/artisan/ [root@VM-0-7-centos artisan]# ll total 0 [root@VM-0-7-centos artisan]# [root@VM-0-7-centos artisan]# touch artisan.log [root@VM-0-7-centos artisan]# # 切到容器内,切到映射的/home目录下 ,发现已经同步了 [root@b7424d27ae0f home]# [root@b7424d27ae0f home]# ls artisan.log [root@b7424d27ae0f home]# [root@b7424d27ae0f home]#
现在,在容器内的 home 文件夹下面创建一个artisan.log文件 ,然后在主机的/root/artisan文件夹下面查看一下是否有artisan.log文件, 容器内的数据与主机实现了同步。
容器内创建个文件,宿主机目录下也有相同的文件