介绍
是为了数据持久化,保存数据在docker
卷 juan,四声
卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统(Union File System),可以提供一些用于持续持久化存储或共享数据的特性。
它完全独立于容器的生存周期,docker不会在容器删除时,删除其挂载的数据卷。
docker 数据卷的特点:
-
数据卷可在容器之间共享或重用数据
-
卷中数据的更改可以直接生效
-
数据卷中的更改不会包含在镜像的更新中
-
数据卷的生命周期一直持续到没有容器使用它为止
其存在的意义类似于优盘
作用
-
数据持久化
-
数据共享。宿主机和docker的数据是一致的
数据卷添加
-
命令添加
-
DockerFile添加
1、用命令添加
-v (volume)
docker run -it -v /宿主机绝对路径路径:/容器内目录 镜像名
docker run -it -v /myDataVolume:/dataVolumeContainer centos
会自动创建目录
宿主机里的
这条指令干的事,就相当于优盘插入电脑,可以数据对接
查看书否绑定成功
docker inspect
容器停止退出,是否继续共享?
宿主机修改文件,容器重新启动,容器会同步宿主机的修改
带权限命令
docker run -it -v /宿主机绝对路径路径:/容器内目录:ro 镜像名
docker run -it -v /myDataVolume:/dataVolumeContainer:ro centos
ro : read only
容器不能修改和新建
宿主机可以修改和新建
文件是宿主机单向有权限修改
2、DockerFile添加
一般步骤
-
新建Dockerfile文件夹
-
在Dockerfile中使用VOLUME指令给镜像添加一个或多个数据卷
-
File构建-(生成docker_file)
-
运行容器
不是在根路径下建立文件夹,会报错
正常的情况下是这样的
查看数据卷的位置
重新进入docker
然后在数据卷2中新建一个文件夹 new_file_from_dvc2.txt
在进入宿主机时报错,-bash: cd 权限不够
查了一下
提上hadoop用户权限,提升为root权限
sudo -i
然后就可以进去了
在宿主机可以看到那个文件了,数据卷建立完成
也可以这样搞
docker run -d -p 8888:8080 --name=mycentos --privileged=true bsy/centos:0.1
--privileged=true使宿主机有权限
容器间传递共享
--volumes-from
-
docker run -it --name docker01 bsy/centos
-
docker run -it --name docker02 --volumes-from docker01 bsy/centos