学习docker 第三天

容器卷

容器内的数据和宿主机映射,即数据的持久化

--privileged=true

通过命令创建容器,将容器/tmp/docker_data数据挂载到宿主机/tmp/host_data下(默认情况下,宿主机和容器内部的挂载卷目录都可进行读写操作,并会双向同步)

容器创建后,进入容器下的/tmp/docker_data下,通过touch dockerin.txt 创建个dockerin.txt,再通过Ctrl+p+q命令退出容器内部,进入宿主机的/tmp/host_data目录下,通过ls命令查看,在宿主机下同样有一个dockerin.txt文件

进入宿主机/tmp/host_data目录下发现存在dockerin.txt,那同样在宿主机创建一个hostin.txt,看是否也同样存在于容器内的/tmp/docker_data下呢?通过touch hostin.txt创建文件,再通过docker exec -it 容器id /bin/bash 以交互式方式进入容器内部,查看容器内/tmp/docker_data下,同样存在hostin.txt

 在验证挂载成功退出后,后面如何查看容器和宿主机挂载情况,可以通过docker inspect 容器id查看挂载情况。 source为源头,即宿主机,destination为容器目录

 在我们和容器和宿主机挂载成功的情况下,停掉容器,在宿主机对应挂载卷创建一个a.txt,然后重新启动容器,数据会同步到容器相应目录吗?答案是yes

设置容器只读权限

通过以下命令启动容器并设置为容器只读权限

docker run -it --privileged=true  -v /mydocker/u:/tmp/u:ro --name u2 ubuntu

我们创建容器后,进入到挂载卷目录,通过touch a.txt创建文件,发现提示 cannot touch ‘a.txt’:read-only file system。至此表示我们创建一个只读容器成功。同样我们通过Ctrl+p+q不停止容器并退出到宿主机,在宿主机对应的目录创建一个a.txt,然后进入容器查看容器内部对应目录是否存在a.txt(注:进入容器为docker exec -it 容器id /bin/bash,图片为笔者手抖失误)

进入容器后,cat a.txt成功

容器卷的继承和共享

第一步启动一个容器u1,并在对应的挂载卷创建一个u1data.txt,Ctrl+p+q退出容器,进入宿主机对应目录,查看是否存在u1data.txt。

 通过 --volumes-from u1指定 u2继承至u1,在u2容器内部也可以查看到u1data.txt

注意,现在 宿主机和u1,u2互通,因为u2继承至u1,当u1挂掉后,依然不影响宿主机和u2进入互通。当然在u1挂掉的途中,宿主机和u2进行的数据操作,当u1启动后同样会同步回来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值