Fork me on Gitee

Docker存储

Docker存储

默认情况下,在运行的容器里创建的文件,被保存在一个可写的容器层。

  • 如果容器被删除了,则数据也没有了
  • 这个可写的容器层是和特定的容器绑定的,也就是这些数据无法方便的和其他容器共享。

Docker主要提供了两种方式做数据的持久化

  • DataVolume,由Docker管理,(/var/lib/docker/volumes/),持久化数据的最好方式
  • Bind Mount,由用户指定存储的数据具体Mount在系统什么位置

DataVolume

指定volumes名称

Data Volume练习MySQL

使用MySQL官方镜像,tag版本为5.7

准备镜像

docker pull mysql:5.7

image-20250104220955420

创建容器

创建容器并制定数据卷

docker container run --name mysql_5.7 -e MYSQL_ROOT_PASSWORD=123456 -d -v mysql-data:/var/lib/mysql mysql:5.7

查看容器的数据卷信息

docker volume inspect mysql-data

image-20250104221249722

写入数据

进入MySQL的shell,密码是123456

docker container exec -it fac3a /bin/bash
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

创建demo数据库

mysql> create database demo;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| demo               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

查看data volume

docker volume inspect mysql-data

image-20250104221648681

可以看到, 在数据卷中同步到了demo库的相关数据信息。

具名和匿名挂载

# 匿名挂载
-v 容器内路径
docker run -d -P --name nginx01 -v /etc/nginx nginx

# 查看所有卷
docker volumne -ls
local    845654564896456145615231456456415641564564654564654564156
# 这种 -v 只写了容器内的路径,没有写容器外的路径!

# 具名挂载
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx

# 查看所有卷
docker volumne -ls




Bind Mount

bind mount指定宿主机上的具体路径

# 对于linux / mac
docker container run -d $(pwd ):/usr/local/ 
# 对于windows,并且需要在desktop中配置share foilder path
docker container run -d ${pwd}:/usr/local
posted @   shine-rainbow  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示