1 . 使用场景
在docker 容器被删除的时候 希望数据不丢失
2 . Volume 的使用
* 注意 在 mysql 的 Dockerfile 内 定义了 VOLUME ["var/lib/mysql"]
创建一个 mysql 的container
sudo docker run -d --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
sudo docker logs mysql1 查看 mysql1 的日志
查看 volume 使用情况 即可看到 mysql volume 使用情况
sudo docker volume ls
sudo docker volume rm [VOLUME NAME 上面 VOLUME 的全名]
查看 volume 详情
docker volume inspect [VOLUME NAME 上面 VOLUME 的全名]
其中 红线部分为 数据挂载的地方
创建 第二个 mysql container
sudo docker run -d --name mysql2 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
查看 volume 列表
sudo docker volume ls
查看 第二个 volume 详情
sudo docker volume inspect [VOLUME NAME 上面 VOLUME 的全名]
验证 volume 不会随 container 的删除而删除
停止并删除 mysql1 mysql2
docker stop mysql1 mysql2 && docker rm mysql1 mysql2
查看volume 发现docker volume 还在
docker volume ls
volume 起别名 -v 参数
重新创建 mysql1 container 并将mysql的数据存储位置命名为mysql
sudo docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
再次查看生成 volume 发现生成的 volume 为 mysql 了
docker volume ls
判断 volume 是否生效
进入 mysql1 容器内
docker exec -it mysql1 /bin/bash
进入mysql
mysql -u root 即可
create database docker; 创建docker 数据库
show databases; 查看数据库是否创建成功
exit 退出mysql
退出 mysql1 容器
exit
关闭并删除 mysql1 容器
docker rm -f mysql1
查看mysql1 的 volume 发现mysql 的 volume 还在
docker volume ls
重新创建 mysql1 并指定volume 还是 mysql
sudo docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
查看 volume
docker volume ls
到 mysql1 容器内查看 docker 数据库是否还存在
docker exec -it mysql /bin/bash
mysql -u root
show databases; 发现 docker 数据库还在