Docker数据卷挂载和本地目录挂载
目录
- 数据卷
- 本地目录挂载
- 案例1-利用Nginx容器部署静态资源
- 案例2-mysql容器的数据挂载
数据卷
数据卷(volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁
查看数据卷相关命令
命令 | 说明 |
---|---|
docker volume create | 创建数据卷 |
docker volume ls | 查看所有数据卷 |
docker volume rm | 删除指定数据卷 |
docker volume inspect | 查看某个数据卷的详情 |
docker volume prune | 清除数据卷(删除未使用数据卷) |
在执行docker run
命令时,使用-v 数据卷:容器内目录
可以完成数据卷挂载
如果容器已经创建,无法进行挂载操作,需要删除,重新创建并挂载
当创建容器时,如果挂在了数据卷且数据卷不存在,会自动创建数据卷
创建数据卷后,会在宿主机目录/var/lib/docker/volumes
下创建对应目录
本地目录挂载
在执行docker run
命令时,使用-v 本地目录:容器内目录
可以完成本地目录挂载
本地目录必须以/
或者./
开头,如果直接以名称开头,会被识别为数据卷而非本地目录
-v mysql:/var/lib/mysql
会被识别为一个数据卷叫mysql-v ./mysql:/var/lib/mysql
会被识别为当前目录下的mysql目录
案例1-利用Nginx容器部署静态资源
需求:
- 创建Nginx容器,修改nginx容器内的html目录下的index.html文件,查看变化
- 将静态资源部署到nginx的html目录
容器内的html
目录:
/usr/share/nginx/html
使用vi命令无法进行修改
使用数据卷解决:
删除nginx容器
创建容器并挂载
docker run -d --name mynginx -p 80:80 -v html:/usr/share/nginx/html nginx
查看数据卷,并查看详情
进入宿主机目录,可以看到完成了映射
使用编辑器直接修改这里的index.html
文件,容器里面的也会修改
再往该目录下上传图片
网页端访问;
访问图片
案例2-mysql容器的数据挂载
需求:
- 查看mysql容器,判断是否有数据卷挂载
- 基于宿主机目录实现MYSQL数据目录,配置文件,初始化脚本的挂载
docker inspect 容器名
:可以查看容器的详情
如下查看nginx
里面有挂载信息
创建并启动mysql容器
查看mysql容器详情
可以看到在创建容器的时候自动挂载了,这个卷称为匿名卷
挂载的容器里面的目录/var/lib/mysql
是mysql的数据存储目录
挂载/root/mysql/data
到容器内的/var/lib/mysql
目录
挂载/root/mysql/init
到容器内的/docker-entrypoint-initdb.d
目录
挂载/root/mysql/conf
到容器内的/etc/mysql/conf.d
目录
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 -v /root/mysql/data:/var/lib/mysql -v /root/mysql/init:/docker-entrypoint-initdb.d -v /root/mysql/conf:/etc/mysql/conf.d mysql