Docker使用笔记(二)

docker容器数据卷

-v命令添加容器数据卷

docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
docker run -it -v /myDataVolume:/dataVolumeContainer centos	#无文件夹自动创建 如果在下面打开数据卷出现查看文件报错“cannot open directory:Permission denied”可以加上 --privileged=true
#查看数据卷是否挂载成功
docker inspect a39157bb935e #后面为container ID
#当出现包含下面的语句块时,证明挂载成功
"Binds": [
                "/myDataVolume:/dataVolumeContainer"
            ]

开启后容器和主机进行数据共享

#宿主机下创建一个文件进行测试
root@ubuntu18-04:/myDataVolume# touch host.txt
#在容器中查看文件夹 有相同的文件 可以进行数据共享
[root@a39157bb935e dataVolumeContainer]# ls
host.txt
#容器卷操作
[root@a39157bb935e dataVolumeContainer]# vi host.txt 
[root@a39157bb935e dataVolumeContainer]# touch container.txt
[root@a39157bb935e dataVolumeContainer]# ls
container.txt  host.txt
#宿主机操作
root@ubuntu18-04:/myDataVolume# ls
container.txt  host.txt
root@ubuntu18-04:/myDataVolume# cat host.txt 
container
root@ubuntu18-04:/myDataVolume# 

#重新进入 容器关闭后执行以下命令重新进入还可以看到挂载的数据卷
docker start 容器名
docker attach 容器名

设置权限

docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名	#只读 

DockerFile添加容器数据卷

root@ubuntu18-04:/# mkdir mydocker #根目录下创建mydocker文件夹
root@ubuntu18-04:/# cd mydocker/
root@ubuntu18-04:/mydocker# vim dockerfile	#编写dockerfile文件
root@ubuntu18-04:/mydocker# ls
dockerfile
root@ubuntu18-04:/mydocker# cat dockerfile 
#volume test
FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD echo "finished,----------success1"
CMD /bin/bash
root@ubuntu18-04:/mydocker# docker build -f /mydocker/dockerfile -t hnn/centos . #生成新的镜像
root@ubuntu18-04:/mydocker# docker run -it hnn/centos
[root@62fd5b21b538 /]# ls	#进入后就会有两个数据卷dataVolumeContainer1,dataVolumeContainer2
bin		      dev   lib		media  proc  sbin  tmp
dataVolumeContainer1  etc   lib64	mnt    root  srv   usr
dataVolumeContainer2  home  lost+found	opt    run   sys   var
#执行以下命令查看容器卷数据卷的映射位置
root@ubuntu18-04:/myDataVolume# docker inspect 62fd5b21b538	#容器名
#出现以下数据块可以看到容器卷数据卷的映射位置
"Mounts": [
            {
                "Type": "volume",
                "Name": "0082ef01c1ee5a02778691ccd957e27a21bf344f10037eacd89b911dc7083b3e",
                "Source": "/var/lib/docker/volumes/0082ef01c1ee5a02778691ccd957e27a21bf344f10037eacd89b911dc7083b3e/_data",
                "Destination": "/dataVolumeContainer1",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            },
            {
                "Type": "volume",
                "Name": "1959db85a71366b4ea781859872c4b930e9599f159ec5bb50ad60ab5b57b55d8",
                "Source": "/var/lib/docker/volumes/1959db85a71366b4ea781859872c4b930e9599f159ec5bb50ad60ab5b57b55d8/_data",
                "Destination": "/dataVolumeContainer2",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ]

以上成功添加数据卷,可以进行数据共享


容器数据卷之间的关联(–volumes-from)

#创建一个容器
root@ubuntu18-04:/# docker run -it --name dc01 hnn/centos
#在第一个容器内创建一个测试文件
[root@092f5d34f720 /]# cd dataVolumeContainer2
[root@092f5d34f720 dataVolumeContainer2]# touch dc01_add.txt
#执行以下命令使新的容器关联另外一个容器的数据卷
root@ubuntu18-04:/# docker run -it --name dc02 --volumes-from dc01 hnn/centos
#另一个容器内可以看到相同的文件
[root@740ea90ebdfc /]# cd dataVolumeContainer2
[root@740ea90ebdfc dataVolumeContainer2]# ls
dc01_add.txt
[root@740ea90ebdfc dataVolumeContainer2]# touch dc02_add.txt #创建测试文件
#再创建一个容器
root@ubuntu18-04:/# docker run -it --name dc03 --volumes-from dc01 hnn/centos
[root@e47368fb1878 /]# cd dataVolumeContainer2
[root@e47368fb1878 dataVolumeContainer2]# touch dc03_add.txt #创建测试文件
#Ctrl+P+Q 退出 再次进入dc01 可以看到后面创建的数据
root@ubuntu18-04:/# docker attach dc01
[root@092f5d34f720 dataVolumeContainer2]# ls
dc01_add.txt  dc02_add.txt  dc03_add.txt 
#Ctrl+P+Q 退出 删除dc01 仍可以看到全部的数据
root@ubuntu18-04:/# docker rm -f dc01
dc01
root@ubuntu18-04:/# docker attach dc02
[root@740ea90ebdfc dataVolumeContainer2]# ls
dc01_add.txt  dc02_add.txt  dc03_add.txt
[root@740ea90ebdfc dataVolumeContainer2]# touch dc02_update.txt
#Ctrl+P+Q 退出 进入dc03 虽然dc02 dc03 都是继承于dc01 仍可以看到dc02数据的更新
root@ubuntu18-04:/# docker attach dc03
[root@e47368fb1878 dataVolumeContainer2]# ls
dc01_add.txt  dc02_add.txt  dc02_update.txt  dc03_add.txt

以上,可以看出:容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值