容器数据卷的理解以及例子

x33g5p2x  于2021-10-17 转载在 其他  
字(1.7k)|赞(0)|评价(0)|浏览(207)

1.DockerFile

DockerFile 就是用来构建docker镜像的构建文件
我们可以通过脚本来生成镜像,镜像是一层一层的,脚本一个个的命令,每个命令都是一层
脚本内容:

FROM centos

VOLUME ["volume01","volume02"]

CMD echo "-------end--------"

CMD /bin/bash

命令

docker build -f /root/ldj/docker-file/dockerfile1 -t ldj_centos:1.0 .

. 是上下文路径

上下文路径,是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build
命令得知这个路径后,会将路径下的所有内容打包。

原理:由于 docker 的运行模式是 C/S。我们本机是 C,docker 引擎是 S。实际的构建过程是在 docker引擎下完成的,所以这个时候无法用到我们本机的文件。这就需要把我们本机的指定目录下的文件一起打包提供给 docker 引擎使用。

如果未说明最后一个参数,那么默认上下文路径就是 Dockerfile 所在的位置。

注意:上下文路径下不要放无用的文件,因为会一起打包发送docker 引擎,如果文件过多会造成过程缓慢。

1.实践一下,开始运行命令

[root@l4 docker-file]# docker build -f /root/ldj/docker-file/dockerfile1 -t ldj_centos:1.0 .
Sending build context to Docker daemon  2.048kB
Step 1/4 : FROM centos
 ---> 5d0da3dc9764
Step 2/4 : VOLUME ["volume01","volume02"]
 ---> Running in 98a2153e334a
Removing intermediate container 98a2153e334a
 ---> f9bf451b304c
Step 3/4 : CMD echo "-------end--------"
 ---> Running in 89289d482809
Removing intermediate container 89289d482809
 ---> 6e41dde7d4ad
Step 4/4 : CMD /bin/bash
 ---> Running in f401d51984b1
Removing intermediate container f401d51984b1
 ---> 4e544f0e9156
Successfully built 4e544f0e9156
Successfully tagged ldj_centos:1.0
[root@l4 docker-file]#

2.验证挂载的volume01文件是否同步

3.首先在容器中volume01 写入文件

4.之后本地查看,本地已经同步

2.数据卷容器

命令:
–volumes-from 实现容器间的共享

eg:实现两个容器间的数据同步共享
1.启动容器docker01

docker run -it --name docker01 ldj_centos:1.0

2.启动容器docker02

docker run -it --name docker02 --volumes-from docker01 ldj_centos:1.0

在docekr01或者docker02写入数据,都会实现两个容器的同步

删除容器docker01,docker02数据不会丢失

eg2:实现三个容器间的数据同步和共享

1.同时启动容器docker01,docker02,docker03,docker02,docker03

在容器docker01创建文件docker01
在容器docker02创建文件docker02
在容器docker03创建文件docker03
查看三个容器均实现了同步

结论:
容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止。

但是一旦持久化到了本地,本事是不会把数据删除的!

相关文章

微信公众号

最新文章

更多