首页 专题 文章 代码 归档
Docker 数据卷
2020.03.19 09:33 2020.03.19 09:34

1. 概念

docker中的容器时很容易删除的,哪怕不容易删除,万一容器突然出现问题?那我们产生的数据怎么办?

数据卷就是用来在docker容器和宿主机之间同步文件(夹)的,然后此时对于该文件夹,所有的操作都是同步的!

那么某个容器被删除,或遭遇特殊事件导致不能使用,但是之前产生的数据任然完完全全的保存在宿主机中;

2. 数据卷的特点

  • 数据卷存在于宿主机的文件系统中,独立于容器,和容器的生命周期是分离的。
  • 数据卷可以是目录也可以是文件,容器可以利用数据卷与宿主机进行数据共享,实现了荣期间的数据共享和交换。
  • 容器启动初始化时,如果容器使用的镜像包含了数据,这些数据会拷贝到数据卷中。
  • 容器对数据卷的修改是实时进行的。
  • 数据卷的变化不会影响镜像的更新。数据卷是独立于联合文件系统,镜像是基于联合文件系统。镜像与数据卷之间不会相互影响。

3. 实践

在启动容器时加上-v参数,-v 即 --volume

docker run --name my_nginx \
-p 8080:80 \
-v /root/data:/data \
-d \
nginx

解释:

--name:指定该容器的名字

-p:将本地的8080端口映射到容器中的80端

-v:将本地(即宿主机)/root/data目录和容器中的/data目录映射起来

-d:后台运行nginx

这样,/root/data/data目录的更改就是同步的了,如果某天该容器出现问题,那么容器中所有的数据都在/root/data中!

效果:

截图-1584579338


挂载多个目录

挂载多个目录其实很简单,指定多个-v参数就行,如:

docker run --name my_nginx \
-p 8080:80 \
-v /root/data:/data \
-v /root/data2:/data2 \
-d \
nginx

一个容器挂载另一个容器的数据卷

docker run -t -i --rm \
--volumes-from my_nginx --name my_nginx2 nginx /bin/bash

使用--volumes-from 要挂载的容器名即可挂载其他容器中的数据卷!

即便是删除了初始的数据卷容器my_nginx,或是删除了其它容器,但只要是有容器在使用该数据卷,那么它里面的数据就不会丢失!(除非是没有容器在使用它们)

本节阅读完毕! (分享
二维码图片 扫描关注我们哟