docker 数据卷

Docker数据卷是Docker中的一个核心机制,用于实现容器间数据的持久化和共享。它是宿主机上的一个特殊目录,可以供一个或多个容器使用。容器删除时,不会删除其挂载的数据卷,也不会存在类似的垃圾机制对容器存在的数据卷进行处理。

容器数据卷的特性:

  1. 持久性:Docker数据卷是在宿主机上创建的目录或文件系统,它独立于容器的生命周期。这意味着即使容器停止或删除,数据卷中的数据仍然会被保留,从而实现了数据的持久化存储。

  2. 共享性:数据卷可以在不同的容器之间挂载和复用,使得多个容器能够访问到相同的数据源。这种特性在微服务架构下的多容器协作中尤为重要,因为不同的服务或组件可能需要共享某些数据。

  3. 高效性:数据卷直接映射到宿主机的文件系统上,因此相对于使用bind mounts(绑定挂载)或者通过容器内部文件系统读写数据,具有更好的I/O性能。

  4. 实时性:对数据卷的修改会立即生效,无论是在容器内部还是在本地目录中对数据卷进行修改,都能实时反映到其他地方。

1、容器数据卷的挂载

1.1 匿名目录挂载

1 创建容器的只给一个地址,会将容器里面的地址挂载在宿主机下/var/lib/docker/volumes路径下生成

# 创建容器,匿名挂载
docker run -ti -d --name my_nginx -p 8000:80 -v /home/wuzhibin  nginx
# 查看容器信息
docker inspect my_nginx 

2 查看容器数据卷挂载,源件为容器中的数据件,目标卷为宿主机上的数据卷

3 在宿主机上新建一个文件

4 在宿主机的文件映射到容器中

1.2 指定目录挂载

1 指定目录挂载相当于容器中的目录挂载到宿主机的指定目录下

# 创建容器
docker run -ti -d --name my_nginx -p 8000:80 -v /home/wuzhibin:/home/wuzhibin  nginx
# 查看容器信息
docker inspect my_nginx 

2 查看宿主机的目录下的文件大小

3 查看容器中挂载卷的文件大小

两个卷的文件是一致的,不管哪个卷中的文件变化都会同步更新的

1.3 DockerFile 添加数据卷

一般我们构建镜像的都是通过DockerFile文件来构建镜像启动容器的,不会通过命令单独对容器进行数据卷的挂载的, 但是请注意Dockerfile 不能直接指定数据卷映射或挂载, 也就是说Dockfile的挂载只能是匿名挂载

# 数据卷挂载的Dockersfile命令
VOLUME ["/home/wuzhibin","/home/wuzhibin"]

完整的Dockerfile文件

# Dockerfile
#基准镜像
FROM nginx:latest
#作者信息
MAINTAINER "wuzhibin"
#工作目录
WORKDIR /usr/local/src/ 
#设置容器中要挂在到宿主机的目录
VOLUME ["/home/wuzhibin/nginx","/usr/local/nginx/html"]
CMD ["nginx", "-g","daemon off;"]

1 编译nginx镜像

# 新建的Dockerfile文件
vim Dokerfile
# 复制上面内容退出
# 编译docker镜像
docker build . -t my_nginx

2 查看编译的镜像

docker images

3 启动容器

docker run -ti -d --name my_nginx my_nginx

4 查看数据卷挂载情况

docker inspect my_nginx

2、数据卷容器

将一个容器的数据共享给一个挂载该容器的容器,就是数据卷容器。这个容器充当一个数据卷,其他挂载这个数据卷容器的容器之间数据共享。

1 运行数据卷容器

docker run --name=data_contain -v /home/wuzhibin:/home/wuzhibin -ti -d  nginx

2、启动需要挂载数据卷的容器1和容器2

docker run -it -d  --name=my_contain1 --volumes-from data_contain nginx
docker run -it -d  --name=my_contain2 --volumes-from data_contain nginx

3、数据卷中添加数据,其他容器中会同步

docker exec -ti data_contain bash
cd /hmoe/wuzhibin
echo hello world > 1.txt

4 查看其他容器的数据

其他的容器中都存在数据卷容器的文件

上一章:docker 的网络管理-CSDN博客

下一章:DockerFile-CSDN博客

  • 18
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平时不搬砖

创造不易,请动动你发财的小手

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值