卷挂载
- volumes(卷挂载) :存储在主机文件系统的一部分中,该文件系统由Docker管理 (在Linux上是“ /var/lib/docker/volumes /”)。 非Docker进程不应修改文件系统的这一部分。 卷是在Docker中持久存储数据的最佳方法。
docker自动在外部创建文件夹自动挂载容器内部指定的文件夹内容(Dockerfile VOLUME指令的作用)
- Bind mounts(绑定挂载) 可以在任何地方 存储在主机系统上。 它们甚至可能是重要的系统文件或目录。 Docker主机或Docker容器上的非Docker进程可以随时对其进行修改。
自己在外部创建文件夹,手动挂载
- tmpfs mounts(临时挂载) 仅存储在主机系统的内存中,并且永远不会写入主机系统的文件系统
可以把数据挂载到内存中
volume(卷)
卷挂载命令:
docker run xxx -v 宿主机:容器里的目录
-v 宿主机绝对路径:Docker容器内部绝对路径:叫挂载;这个有空挂载问题
-v 不以斜杆(/)开头的路径:Docker容器内部绝对路径:叫绑定(docker会自动管理,docker不会把他当成目录,而把它当成卷)
- 匿名卷使用示例:
#docker将创建出匿名卷,并保存容器/etc/nginx下面的内容
docker run -dP -v /etc/nginx nginx(宿主机啥也不写,直接写容器 内的目录)
- 具名卷使用示例
#docker将创建出名为nginx的卷,并保存容器/etc/nginx下面的内容
docker run -dP -v nginx:/etc/nginx nginx
demo示例:
- -v /root/html:/usr/share/nginx/html 效果:访问forbidden
- -v html:/usr/share/nginx/html:ro 效果:访问默认欢迎页
- -v /usr/share/nginx/html 效果:匿名卷 (什么都不写也不要加冒号,直接写容器内的目录)
# -v不以绝对路径方式;
### 1、先在docker底层创建一个你指定名字的卷(具名卷) html
### 2、把这个卷和容器内部目录绑定
### 3、容器启动以后,目录里面的内容就在卷里面存着
#####-v nginxhtml:/usr/share/nginx/html 也可以以下操作
## 1、 docker create volume nginxhtml 如果给卷里面就行修改,容器内部的也就改
了。
## 2、 docker volume inspect nginxhtml
## 3、docker run -d -P -v nginxhtml:/usr/share/nginx/html --name=nginx777 nginx
# 可以看到
"Mounts": [
{
"Type": "volume", //这是个卷
"Name": "html", //名字是html
"Source": "/var/lib/docker/volumes/html/_data", //宿主机的目录。容器里面的哪两个文件都在
"Destination": "/usr/share/nginx/html", //容器内部
"Driver": "local",
"Mode": "z",
"RW": true, //读写模式
"Propagation": ""
}
]
#卷:就是为了保存数据
docker volume #可以对docker自己管理的卷目录进行操作;
/var/lib/docker/volumes(卷的根目录)
卷管理
docker volume create xxx:创建卷名
docker volume inspect xxx:查询卷详情
docker volume ls: 列出所有卷
docker volume prune: 移除无用卷
查看卷在哪
- 先列出哪些卷
docker volume ls
- 查看卷在宿主机哪
docker volume inspect xxx