docker--数据持久化之Data Volume

匿名 (未验证) 提交于 2019-12-02 23:49:02

使用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> 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!