注意:任何文章的都是来自于官方文档的翻译和二度创作,所以建议大家直接去 DockerHub官方
网站看官方配置说明:
一、数据卷
1、前期知识:在使用docker容器管理像redis和mysql这样对数据持久化很多必要的镜像时,务必要将这些容器运行中产生的数据保存到持久化文件中,并使用数据卷(-v命令)
挂载到我们宿主机上的某一个路径进行保存,这样在下次启动启动会对之前的数据做一个数据恢复,也可以保证我们的数据不丢失。
2、数据卷
:英文名 volume。在启动容器镜像时会使用 -v
命令来指定宿主机与启动容器内部的某一个文件夹进行映射。这样就可以使宿主机的文件数据与容器内部进行互通。说白了,数据卷就是用于对docker镜像容器与宿主机数据映射互通的一个渠道。
3、为什么要使用数据卷:很简单,假如没有使用数据卷对容器内部数据文件夹与宿主机本地文件夹做一个映射,那么删除当前启动的docker容器,之前该容器产生的全部数据都会丢失,比如你启动一个mysql数据库镜像,没有做数据卷的数据映射,那么你使用该数据库创建的所有数据库、表、表中字段及数据,会随着该mysql镜像的删除而丢失。就是用数据卷来持久化数据到宿主机物理磁盘上。
4、数据卷命令介绍(一般使用数据卷挂载的文件主要是后期生成的数据,比如mysql的表数据,字段等等数据、配置文件、日志文件):
(1)命令:
-v 宿主机目录:容器内部目录
宿主机目录:这个可以是你自己创建的,也可以不写具体的文件路径,直接写一个数据卷名称,系统会自动分配一个文件目录路径去映射容器内部指定的目录的,之后也可以使用目录去查看的系统创建的这个数据卷对应宿主机的文件夹路径地址;
容器内部目录:这个启动容器的内部文件夹对应的地址,可以是数据或配置文件或日志文件的路径。这个路径可以通过官方文档获知,也可以先把容器镜像使用最简单启动方式启动起来,进入容器内部看看要挂载的文件的位置,便于之后要使用-v
命令去挂载。
注意:一旦有了数据卷做文件级别的互通,系统就会将容器内部的文件夹下的文件全部复制到宿主机数据卷对应的文件夹中,一旦宿主机对应的这些文件有变化,容器内部也会感知到,因为他们是相互影响的。
(2)找到容器内部目录(以启动tomcat为例演示):
a、先使用最简单的命令启动容器;
b、再进去内容内部;
c、查看目录。
5、常见数据卷的命令:
大家明白了数据卷这个是做什么的之后,那么再来看看官方文档对这一个镜像的启动命令就会明白。
还是建议大家去官方看文档,我以下演示的只是冰山一角,不全面的。
MySQL的Docker文档:https://registry.hub.docker.com//mysql?
Redis的Docker文档:https://registry.hub.docker.com//redis?