5 docker-容器数据管理
一 容器内添加数据卷--直接用命令
1 不带权限挂载目录
docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名字
这两个目录不用提前建立,会自动生成,然后在宿主机或者容器里面对应的目录写入文件,看是否会自动同步(两者都可读可写)
例子:
docker run -itd -v /data/:/data centos bash
2 带权限的挂载目录
docker run -it -v /hostdir:/voludir:ro centos
容器里面没有写入权限,只有宿主机才可以写入
二 容器内添加数据卷--用dockerfile添加
1 用volume参数来添加数据卷,可以一次添加多个,我这里添加了两个
FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD echo "finished,--------success1"
CMD /bin/bash
2 然后build,出现下面信息表示成功
docker build -f /mydocker/Dockerfile -t hnf/centos .
Sending build context to Docker daemon 2.048kB
Step 1/4 : FROM centos
---> 470671670cac
Step 2/4 : VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
---> [Warning] IPv4 forwarding is disabled. Networking will not work.
---> Running in 1174d3eb47d8
Removing intermediate container 1174d3eb47d8
---> c7014cc56c0a
Step 3/4 : CMD echo "finished,--------success1"
---> [Warning] IPv4 forwarding is disabled. Networking will not work.
---> Running in a5140e327aff
Removing intermediate container a5140e327aff
---> c32098c138eb
Step 4/4 : CMD /bin/bash
---> [Warning] IPv4 forwarding is disabled. Networking will not work.
---> Running in 2254626cd4a9
Removing intermediate container 2254626cd4a9
---> b9e86919260f
Successfully built b9e86919260f
Successfully tagged hnf/centos:latest
3 用新构建的镜像生成一个容器
docker run -it hnf/centos /bin/bash
去查看是否生成两个目录 dataVolumeContainer1 和dataVolumeContainer2
4 这两个目录对应的宿主机的目录在哪里,
通过docker inspect 2c38b4993770 查看
其中source是宿主机上面的目录,destination是容器里面的目录
三 容器里数据相互继承同步
1 先启动一个父容器
docker run -it --name dc01 hnf/centos 然后去dataVolumeContainer2 添加内容
2 然后启动dc02和dc03去继承dc01
docker run -it --name dc02 --volumes-from dc01 hnf/centos
docker run -it --name dc02 --volumes-from dc01 hnf/centos
然后你去dc02和dc03里面分别去新建文件,你会发现三个容器直接是相互同步的,
3 删除dc01看02和03数据是否还存在,答案是存在的