1.使用docker自定义data volume
在mysql官方镜像的Dockerfile中定义了以下volume
VOLUME /var/lib/mysql
所以如果不指定-v参数docker会自定一个volume
docker run -d --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
查看volume如下
docker volume ls
DRIVER VOLUME NAME
local efcfec6f13b6efc66be2f0f73b5895b7b2324937e993e375afd1018443ca5f5b
进一步查看详情
docker volume inspect efcfec6f13b6efc66be2f0f73b5895b7b2324937e993e375afd1018443ca5f5b
可以看到volume的情况:
[
{
"CreatedAt": "2018-06-08T01:14:48Z",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/efcfec6f13b6efc66be2f0f73b5895b7b2324937e993e375afd1018443ca5f5b/_data",
"Name": "efcfec6f13b6efc66be2f0f73b5895b7b2324937e993e375afd1018443ca5f5b",
"Options": null,
"Scope": "local"
}
]
由于不方便使用所以我们使用以下定义volume名称的方法来使用
2.创建自定义volume名称的容器
docker run -d --name mysql2 -v mysql:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
-v {指定的data volume的名称}:{容器内要挂载的路径(同Dockerfile中VOLUME定义的路径)}
查看volume如下
docker volume ls
DRIVER VOLUME NAME
local efcfec6f13b6efc66be2f0f73b5895b7b2324937e993e375afd1018443ca5f5b
local mysql
3.进入mysql2容器增加数据
docker exec -it mysql2 /bin/bash
mysql -u root
create database test;
创建一个数据库;
4.让其它容器使用该volume
docker run -d --name mysql3 -v mysql:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
5.进入mysql3检查数据库是否存在
6.如果 Dockerfile中不使用VOLUME指令则-v的用法如下
-v {宿主机路径}:{docker容器中要挂载的路径}
此方法可以打通开发流程