数据卷和数据卷容器
数据卷
Docker下数据卷是一个可供容器直接使用的特殊目录,有如下特性:
- 数据卷可以在一个或多个容器见共享和重用
- 对数据卷的修改会立即生效
- 对数据卷的操作不影响镜像
- 数据卷的生命周期独立于容器
数据卷容器
数据卷容器也是一个正常的容器,专门提供数据卷供其他容器挂载的。
创建数据卷容器
创建一个名为sqldata
的数据卷容器:
|
|
这个命令会创建一个名为sqldata
的数据卷容器,并且将容器中的/var/lib/mysql
目录映射到宿主机的/data/mysql
下。
创建mysql容器并挂载数据卷容器
首先拉去mysql
的镜像:
|
|
创建mysql
容器,并挂载数据卷sqldata
:
|
|
这个命令会创建一个MySQL容器,为root
用户设置密码为123456
,并且挂载sqldata
数据卷。
进入到myMysql
容器中,并且登录到mysql服务器:
|
|
这时候,root用户只能通过localhost
访问,增加用户,授予其对应权限:
|
|
创建test
用户后,就可以以正常访问mysql数据库的方式远程访问myMysql
容器了。
通过数据卷容器备份、恢复和迁移数据
备份
创建一个新容器,加载sqldata
容器中的数据卷,并从主机挂载当前目录到容器的/backup
目录。容器启动后,将sqldata
数据卷备份为当前容器中的/backup/backup.tar
文件。
|
|
恢复
先创建一个带有空的数据卷的容器:
|
|
再创建另一个容器,挂载backupdata
容器中的数据卷,解压备份文件到挂载的容器数据卷中:
|
|