Docker儲存Volume使用

doegoo發表於2018-06-08

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容器中要掛載的路徑}
此方法可以打通開發流程

相關文章