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
创建容器
创建容器并制定数据卷
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
写入数据
进入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
可以看到, 在数据卷中同步到了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
标签:+--------------------+,容器,存储,run,nginx,mysql,docker,Docker
From: https://www.cnblogs.com/shine-rainbow/p/18654107