数据卷常用命令
查看所有的数据卷
docker volume ls
可以使用
docker inspect 容器id
来查看是否挂载成功, 在显示的信息中查看 Mounts 部分的内容
指定路径挂载
docker run -it -v 主机目录:容器内目录 镜像名称 /bin/bash
匿名挂载
docker run -it -v 容器内目录 镜像名称
具名挂载
- 多数情况下都使用的是具名挂载
docker run -it -v 随便起的名字:容器内目录 镜像名称
docker run -it -v 随便起的名字:容器内目录:ro 镜像名称
: 其中 ro 表示的是只能读, read only, 表示的是不能在容器内部进行修改, 只能通过宿主机来修改docker run -it -v 随便起的名字:容器内目录:rw 镜像名称
: 其中 rw 表示的是可读可写, read write (默认的)
使用 dockerfile 来挂载
案例:
touch dockerfile
vim dockerfile
FROM centos VOLUME ['volume01', 'volume02'] CMD echo '====end======' CMD /bin/bash
docker build -f dockerfile -t xiaosheng/centos .
-f : 表示 dockerfile 文件的路径
-t : 表示要生成的镜像名称
. : 表示要生成在哪个目录下
最后可以使用
docker inspect 镜像id
来查看数据卷的详细信息
查看指定数据卷对应的目录
docker volume inspect 具名挂载时起的名字
当挂载数据卷并且没有指定路径的时候,
Linux
中一般都是挂载在/var/lib/docker/volume
目录中
配置 MySQL
docker run -d -p 3306:3306 -v /home/mysql/my.conf:/etc/mysql/my.conf -v /home/mysql/data:/use/local/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
- -e 用来配置 MySQL 密码, 可以同时挂载多个数据卷
数据卷容器
可以在多个容器之间共享数据
案例
- 先开启一个 nginx01 的容器
- 然后需要再开启一个 nginx02 的容器, 同时这两个容器之间需要数据共享, 那就在开启 nginx02 的时候就可以使用以下命令:
docker run -it --name nginx02 --volumes-from nginx01 xiaosheng/centos
- 同时还可以有其他的容器来和 nginx01 一起共享数据
- 即便 nginx01 容器关掉或者销毁, 并不会影响到其他容器中共享的数据
- 只要还有一个容器在使用, 那么数据就不会消失
推荐文章: