使用mysql为例
查看docker hub官方的mysql image 的dockerfile,有这一行:VOLUME /var/lib/mysql
-v给volume创建别名
[root@localhost ~]# docker run -d --name mysql1 -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:5.7.26 31584edba6eb9b4aa772076f1c2d73c5eb7b4f1e62dd24b41c68518bdf62e11a [root@localhost ~]# [root@localhost ~]# docker volume ls DRIVER VOLUME NAME local mysql [root@localhost ~]# docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 31584edba6eb mysql:5.7.26 "docker-entrypoint.s…" 47 seconds ago Up 46 seconds 3306/tcp, 33060/tcp mysql1 [root@localhost ~]# docker volume create inspect ls prune rm [root@localhost ~]# docker volume inspect mysql [ { "CreatedAt": "2019-07-22T03:09:06-07:00", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/mysql/_data",#在宿主机的挂账路径 "Name": "mysql", "Options": null, "Scope": "local" } ] [root@localhost ~]#
删了container,不删volume ,重新创建mysql container,数据还在
[root@localhost ~]# docker exec -it mysql1 /bin/bash root@31584edba6eb:/# mysql -uroot Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 2 Server version: 5.7.26 MySQL Community Server (GPL) Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec) mysql> create database docker; Query OK, 1 row affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | docker | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec) mysql> exit Bye root@31584edba6eb:/# docker rm -f mysql1 bash: docker: command not found root@31584edba6eb:/# exit exit [root@localhost ~]# docker rm -f mysql1 INFO[2019-07-22T03:24:25.954289600-07:00] ignoring event module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete" WARN[2019-07-22T03:24:26.032476919-07:00] 31584edba6eb9b4aa772076f1c2d73c5eb7b4f1e62dd24b41c68518bdf62e11a cleanup: failed to unmount IPC: umount /var/lib/docker/containers/31584edba6eb9b4aa772076f1c2d73c5eb7b4f1e62dd24b41c68518bdf62e11a/mounts/shm, flags: 0x2: no such file or directory mysql1 [root@localhost ~]# docker volume ls DRIVER VOLUME NAME local mysql [root@localhost ~]# docker run -d --name mysql1 -v mysql:/var/lib/mysql --name mysql2 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:5.7.26 877377cb64ec6242d2cd9e821d3978e7f5e6d2dce791d88e605e3f5b2a098762 [root@localhost ~]# docker exec -it mysql2 /bin/bash root@877377cb64ec:/# mysql -uroot Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 2 Server version: 5.7.26 MySQL Community Server (GPL) Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | docker | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec) mysql>