一文说清楚Dockerfile 中VOLUME到底有什么用?

Dockerfile中的VOLUME指令常用于声明匿名卷,以确保数据在容器删除后仍保留,防止向容器存储层写入大量数据。与docker run -v不同,VOLUME并不直接映射宿主机目录,而是创建匿名卷。当-v与VOLUME指定不同位置时,以-v为准。一般非数据库应用无需在Dockerfile中使用VOLUME,以保持容器的可移植性。
摘要由CSDN通过智能技术生成

写在开头

相信大部分人对docker run -v这个参数都比较熟悉,无非就是把宿主机目录和容器目录做映射,以便于容器中的某些文件可以直接保存在宿主机上,实现容器被删除之后数据还在,比如我们把mysql装在容器中,肯定不能说容器被删mysql所有的数据也都不在了。第二个作用是也可以用来实现多容器共享同一份文件。

但如果玩过dockerfile的话就知道dockerfile还有个VOLUME指令,如

FROM centos:latest
RUN groupadd -r redis && useradd  -r -g redis rediså
RUN yum -y update &&  yum -y install epel-release && yum -y install redis && yum -y install net-tools
RUN mkdir -p /config && chown -R redis:redis /config
VOLUME /share/data #声明容器中/share/data为匿名卷
EXPOSE 6379

这个指令很容易和启动时的-v指令搞混淆,他们之间到底有什么区别呢,什么时候需要使用volume呢?
volume指令指定的位置在容器被删除以后数据文件会被删除吗?如果-v和volume指定了同一个位置,

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值