Docker数据卷及挂载
数据卷
数据卷是宿主机上的的目录或者文件,可以被直接mount到容器当中使用,实际生成环境中,需要针对不同类型的服务,不同类型的数据存储要求做相应的规划,
最终保证服务的可扩展性,稳定性以及数据的安全性。
Docker数据卷
简单说就是为实现容器数据共享以及容器数据持久化存在的一种技术。所谓容器数据共享就是宿主机与容器之间的数据共享、容器与容器之间的数据共享,数据持久化就是将容器数据保存下来,不会因为容器关闭就丢失原有数据。
卷存储(Volume)在由Docker(/var/lib/docker/volumes/
在Linux上)管理的主机文件系统的一部分中。非Docker进程不应修改文件系统的这一部分。卷是在Docker中保留数据的最佳方式。
因此容器数据卷应该有以下几个特点:
1、容器数据卷可以在容器之间共享或存储数据;
2、容器数据卷中的数据更改会立即生效;
3、容器数据卷中的数据更改不会同步到容器镜像中;
4、容器数据存在的生命周期会一直持续到没有任何容器使用它为止;
容器数据卷生成方式主要有Docker命令方式以及DockerFile方式
Docker命令方式生成容器数据卷,
命令格式如下:
docker run -it -v /宿主机绝对路径目录:/容器内绝对路径目录 镜像名
容器数据目录
查看指定PID的容器信息
docker inspect 容器ID
存储信息data
LowerDir:底层目录, image镜像层(只读)
UpperDir:读写层,用来写入容器产生的新的数据
mergeddir:容器的文件系统,使用Union FS(联合文件系统将lower和upper Diur合并并供容器使用
WorkDir:容器再宿主机的工作目录,容器被锁定到这个工作目录里
例子演示:
启动一个名为web1的tomcat容器
-v:将宿主机目录挂载到容器目录
docker run -it -d --name web1 -v /data/testapp:/usr/local/tomcat/webapps/testapp -p 8080:8080 tomcat:8.5.73
访问验证tomcat容器是否启动成功
启动一个名为web2的toncat容器
访问tomcat页面验证
默认情况下数据是可以在容器里改
修改的数据是立即生效(容器数据卷的特点)
容器只读模式挂载
将tomcat配置文件拷贝出来
启动名为web3的toncat容器并定义只读
ro:只读
容器里安装vim
#apt update
#apt install vim -y
进入web3容器
随便修改,按保持,就可以看到不可写,为只读模式