使用場景:mysql容器在被銷燬以後,數據能夠持久化
# 爲了便於測試,設置root密碼爲空 docker run -d --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:latest
Mountpoint
的值 /var/lib/docker/volumes/5bcd1cb1088a71fbf595fb817ea9511501f794ac17971529cd3451102f872a87/_data
,就是mysql容器保存數據到虛擬機的地方了node
[vagrant@docker-node1 ~]$ docker volume ls DRIVER VOLUME NAME local 5bcd1cb1088a71fbf595fb817ea9511501f794ac17971529cd3451102f872a87 [vagrant@docker-node1 ~]$ docker volume inspect 5bcd1cb1088a71fbf595fb817ea9511501f794ac17971529cd3451102f872a87 [ { "CreatedAt": "2018-07-03T12:12:36Z", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/5bcd1cb1088a71fbf595fb817ea9511501f794ac17971529cd3451102f872a87/_data", "Name": "5bcd1cb1088a71fbf595fb817ea9511501f794ac17971529cd3451102f872a87", "Options": null, "Scope": "local" } ]
docker container stop mysql1 docker container rm mysql1
刪除以後發現該容器對應的volume仍是存在的,這也就是mysql數據的持久化了mysql
若是是降級mysql的版本,因爲volume data的存在,可能低版本的mysql不兼容,致使出現問題,此時還須要刪除volume data。
[vagrant@docker-node1 ~]$ docker run -d -v mysql:/var/lib/mysql --name mysql2 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:latest 028c9a31c4b1bbe0ef1aa40517e881fb655d2efb81d5591460c323b320ac2e84 [vagrant@docker-node1 ~]$ docker volume ls DRIVER VOLUME NAME local mysql [vagrant@docker-node1 ~]$ docker volume inspect mysql [ { "CreatedAt": "2018-07-03T12:25:48Z", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/mysql/_data", "Name": "mysql", "Options": null, "Scope": "local" } ]
進入到mysql2容器,建立一個數據庫,名稱爲dockersql
docker exec -it mysql2 /bin/sh mysql -u root mysql> create database docker; mysql> show databases; +--------------------+ | Database | +--------------------+ | docker | | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec)
而後刪除mysql2容器docker
docker container stop mysql2 docker container rm mysql2
建立一個mysql3容器shell
docker run -d -v mysql:/var/lib/mysql --name mysql3 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:latest docker exec -it mysql3 /bin/sh mysql -u root mysql> show databases; +--------------------+ | Database | +--------------------+ | docker | | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec)
nice!發現docker數據庫在容器mysql3中依然是能夠使用的。數據庫