docker在容器中管理数据主要有两种方式:
(1)数据卷(Volumes)
(2)挂载主机目录(Bind mounts)。
从docker下载下来的叫镜像images;
使用docker run运行起来的镜像叫容器containers;
1. 挂在本地目录
Docker容器启动时,如果要挂载宿主机上的一个目录,可以用-v参数指定。
加入要启动一个ubuntu容器,宿主机的/data1目录挂载到容器的/data2目录,可通过以下方式指定:
docker run -it -v /data1:/data2 centos /bin/bash
image.png image.png在容器启动后,容器内会自动创建/data2的目录。
-v参数中,冒号":"前面的目录是宿主机目录,后面的目录是容器内目录。
冒号”:”前后的路径必须是绝对路径,以下斜线“/”开头。
宿主机目录如果不存在,则会自动生成。
现在镜像内就可以在宿主机和docker里互相共享文件了。
image.png2. docker数据卷容器
docker还提供了一种更高级的用法,叫数据卷。
数据卷:“其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的”。感觉像是由一个容器定义的一个数据挂载信息。其他的容器启动可以直接挂载数据卷容器中定义的挂载信息。
Step1.创建数据卷命令
docker volume create edc-nginx-vol // 创建一个自定义容器卷
docker volume ls // 查看所有容器卷
docker volume inspect edc-nginx-vol // 查看指定容器卷详情信息
image.pngvolumes:默认位于/var/lib/docker/volumes目录中。
Step2.****创建使用指定卷的容器
有了自定义容器卷,我们可以创建一个使用这个数据卷的容器。
命令:
docker run -d -it --name=shared-vol -v shared-vol:/shareddata ubuntu:18.04
docker ps
docker exec -it 80692ff2b813 /bin/bash
image.png到刚刚创建的数据卷里面查看:
image.png此外,我们还可以启动多个容器实例,并且共享同一个数据卷,复用性和扩展性较强。
Step3.****如果不再使用数据卷了,可以手动清理掉
命令:
docker stop xxx// 暂停容器实例
docker rm xxx // 移除容器实例
docker volume rm xxx // 删除自定义数据卷
image.png原文链接:
Docker挂载本地目录和数据卷容器实现文件共享 - 知乎 (zhihu.com)
https://mp.weixin.qq.com/s/MvJdjDfMCU6g3UhStiinyg
网友评论