6.0 数据卷特点
数据卷是一个可供一个或多个容器使用的本地文件目录,主要特性如下:
1)数据卷可以在容器之间共享和重用
2)对数据卷的修改会立即生效
3)对数据卷的更新,不会影响镜像
4)数据卷默认会一直存在,即使容器被删除提示:数据卷的使用,类似于 Linux 下对目录进行 mount。
6.1 使用场景
1) 程序目录
2) 程序日志
3) 集群数据目录
6.2 数据卷操作
#从容器内拷贝文件到主机上
6.2.1 语法:
/
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- #将容器的/test.txt 拷贝到主机的 /tmp目录中 [root@localhost ~]# docker run -it --name c1 -h c1-test centos /bin/bash [root@c1 /]# echo "docker" > /test.txt #cp 也可以拷贝目录 [root@master ~]# docker cp c1:/test.txt /tmp/ [root@master ~]# ls /tmp/test.txt /tmp/test.txt [root@master ~]# cat /tmp/test.txt docker
6.2.2 #推送文件至容器/tmp 目录下,通过容器ID
[root@docker ~]# echo 'ceshi' >ceshi.txt #复制本机的 ceshi.txt 文件到容器 c06fc46a1176 #注意复制到容器中的文件与挂载本机的目录到容器有不同, 如果是挂载的模式,在本机目录写入文件那么也会同步到容器, 如果是复制文件,则内容不会同步 [root@master ~]# docker cp ./ceshi.txt c1:/tmp
/
6.2.3 #检查
[root@docker ~]# docker attach c1 进入容器 [root@docker ~]# echo 'ceshi' >ceshi.txt #复制本机的 ceshi.txt 文件到容器 c06fc46a1176 #注意复制到容器中的文件与挂载本机的目录到容器有不同, 如果是挂载的模式,在本机目录写入文件那么也会同步到容器, 如果是复制文件,则内容不会同步 [root@master ~]# docker cp ./ceshi.txt c1:/tmp
6.3 创建数据卷
使用docker run 命令中使用-v 标识来给容器内添加一个数据卷,也可以在一次docker run 命令中, 多次使用-v 标识挂载多个数据卷。
数据卷的使用场景
6.3.1 创建一个新容器并挂载本地目录
[root@master ~]# echo "from local txt" > /mnt/fromlocal.txt #宿主机操作 #将本地目录/mnt 挂载到容器的/mnt [root@docker ~]# docker run -it -v /mnt/:/mnt centos /bin/bash [root@97f04ce38226 mnt]# cat fromlocal.txt from local txt #在宿主机/mnt 创建目录, 会在容器挂载目录中实时看到
6.4 数据卷权限设置
docker 默认情况下是对数据卷有读写权限,但是通过这样的方式让数据卷只读
[root@demo ~]# docker run -it --name centos-ro -v /mnt:/mnt:ro centos /bin/bash #创建文件报错 [root@875aaa01cccc mnt]# touch t1.txt touch: cannot touch 't1.txt': Read-only file system