作用
● 做数据持久化。防止容器一旦停止运行,该容器中运行产生的数据就没了
● 不同容器之间的数据共享(大鲸鱼背上各个小集装箱之间可以共享数据)
交互式命令使用
docker run -it -v / 宿主机的绝对路径目录:/容器内绝对路径目录 镜像名
docker run -it -v / 宿主机的绝对路径目录:/容器内绝对路径目录: ro 镜像名
-i: 交互
-t: 终端
-it: 可交互的终端
-v: volume, 卷
:ro: readOnly, 在容器内只能有读的操作,写的话只能在宿主机中写,然后同步到容器中
上面命令可以将宿主机中的文件目录和容器内的文件目录进行双向绑定
即容器的读写数据会同步到宿主机
宿主机中的读写也会同步到容器
宿主机和容器建立联系
运行
docker run -it -v /Users/yjian/Documents/yjian/learn/docker/hostData:/usr/local/containerData mycentos:1.0.0
注意的点
● 宿主机和容器内都需要写上绝对路径而非相对路径
● 后面是镜像Image和版本,运行之后的效果是宿主机下的该文件夹和以该镜像运行起来的容器中的目录关联在了一起
● -v 有新建文件夹的功能,相当于mkdir
宿主机中写入数据同步到容器中
容器中写数据同步到宿主机中
使用docker inspect 查看
容器停止运行,更新宿主机信息
容器停止运行时,更新宿主机的内容,当容器再次启动的时候,信息也会同步到容器中
只读
在容器的绝对路径后面追加:ro (read-only)
docker run -it -v /Users/yjian/Documents/yjian/learn/docker/hostData2:/usr/local/containerData2:ro mycentos:1.0.0
没写文件的权限
如果要是新建的容器卷报没有写权限的错误可以在挂在目录后面追加 --privileged=true 即可
docker run -it -v /Users/yjian/Documents/yjian/learn/docker/hostData2:/usr/local/containerData2 --privileged=true mycentos:1.0.0
dockerFile使用数据卷
VOLUME [‘容器内路径1’, ‘容器内路径2’, ‘容器内路径3’]
由于宿主机目录是依赖于特定宿主机的,并不能够保障在所有的宿主机上都存在特定的目录
通过 docker inspect containerId来查看docker 容器的配置信息,就可以查看到当前的 dataVolumeContainer1、dataVolumeContainer1在宿主机中的源文件映射的路径在哪