使用docker运行软件或者项目的时候很容易发现一个问题:整个项目都在docker中运行,那么它产生的一些数据也会在docke容器中,那么今后都不能删除这个docker容器了,因为会连带着产生的一些数据全部删除了。不过既然docker这么流行,肯定有方式解决这个问题,那就是将容器外的文件挂载到容器中,其实就是将容器内部的文件地址指向容器外面liunx的文件系统中指定的文件上,这样数据的写入和读取都操作容器外面的文件,那么如果容器升级或者删除再重新安装,数据都不会丢失了。、
今天这里就讲如何将外部的文件挂载到容器内的指定文件夹上,docker默认可以管理容器外部的一些文件,地址一般在 /var/lib/docker/volumes,它是docker默认的文件卷地址,在这个文件夹中创建卷的命令是:
docker volume create [文件夹名字]
创建完成后可以通过命令查看创建的volume,使用docker volume ls,这里创建了html文件夹,并用ls命令查看是否创建成功。
还可以用 docker volume inspact [volume文件名] 查看文件的详细信息,比如创建时间、所在liunx系统的绝对路径等
如果要将此文件夹挂载到容器中,命令是,如果volume文件夹不存在会自动创建文件夹
docker run -v [volume文件夹]:[容器中文件路径] [镜像名称]:latest
也可以用 --mount参数,。不过与-v不同的是,如果volume文件夹本来不存在,则不会自动创建文件夹。会报错提示找不到文件夹
docker run --mount source=[volume文件夹],target=[容器中文件路径] [镜像名]:latest
最后再说下删除volume文件,docker有两种删除方式,一个是删除不使用的volume文件,使用docker volume prune,还可以用docker volume rm [volume文件名]删除指定的volume文件
docker volume prune
docker volume rm [volume文件名]
好了docker的卷创建删除和挂载基本操作都在这里了,不过要注意的是:
1.目标路径必须是容器内部的绝对路径。
2.如果要在多个容器之间共享数据,则需要使用相同的挂载路径和选项。
3.如果挂载了主机上的目录,则容器内的更改将反映在主机上,并且主机上的更改将反映在容器内。
4.如果挂载了数据卷,则数据将在容器停止和删除后仍然存在。
总之,使用挂载可以让容器访问主机上的文件系统,并可以在多个容器之间共享数据。
好了,以上如果有问题可以在评论区给我留言