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数据是否还存在,答案是存在的

posted @ 2020-04-16 15:29  huningfei  阅读(196)  评论(0编辑  收藏  举报
levels of contents