Docker:容器数据卷

背景

docker理念:

  • 将应用与运行的环境打包形成容器,运行可以伴随容器,但是我们对数据的要求希望是持久化的
  • 容器之间希望可以有共享数据
    Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据作为镜像的一部分保存下来,那么当容器删除以后,数据自然就没有了。
    为了能保存数据,在docker中我们使用容器数据卷。
    特点:
  • 数据卷可以在容器之间共享或重用数据
  • 卷中的更改直接生效
  • 数据卷中的更改不会包含在镜像的更新中。
  • 数据卷的生命周期一直持续到没有容器使用它为止。

数据卷添加

管理volume

 docker volume create tomcat-vol // 自定义数据卷
 docker volume ls // 查看所有数据卷
 docker volume inspect tomcat-vol // 查看指定数据卷详情信息

image-20200919235445733

自定义数据卷后,我们可以使用该数据卷:

docker run -p 8080:8080 -d --name mytomcat -v tomcat-vol:/usr/local/tomcat f796d3d2c195

再观察该目录:

 ls -al  /var/lib/docker/volumes/tomcat-vol/_data

image-20200919235350823

说明数据卷挂载成功。

run

命令:

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

容器内目录不能修改文件,只能查看,宿主机可以修改文件(ro:read only)

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

DockerFile添加

vi Dockerfile
docker build -f /mydocker/Dockerfile -t wj/centos .

Dockerfile文件内容:

FROM centos
VOLUME ["/dataContainer","/dataContainer2"]
CMD echo "success"
CMD  /bin/bash

执行结果:
image-20200917103509782

数据卷容器

命名的容器挂载数据卷,其他容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,成为数据卷容器
命令:--volumes-from

docker run -it --volumes-from 父容器名 镜像名

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

原文地址:https://www.cnblogs.com/wwjj4811/p/13687212.html