『中级篇』数据持久化之Data Volume(34)

作者: IT人故事会 | 来源:发表于2018-07-18 23:11 被阅读6次

    有些容器会自动产生一些数据,为了不让数据随着container的消失而消失,保证数据的安全性。例如:数据库容器,数据表的表会产生一些数据,如果我吧container给删除,数据就丢失。为了保证数据不丢失,有了Volume的存在。
    源码https://github.com/limingios/docker No.3 方便学习数据持久化存储

    以官方的例子
    • hub.docker.com 搜索mysql,查看对应的Dockerfile,VOLUME /var/lib/mysql
    VOLUME的使用

    从本次开始我开始用第三方SecureCRT了不再用cmd了

    #镜像加速器
    curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://b81aace9.m.daocloud.io
    #创建一个mysql容器,MYSQL_ALLOW_EMPTY_PASSWORD使用空密码
    sudo docker run -d --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
    sudo docker ps
    
    #查看volume
    sudo docker volume ls
    #容器的volume的Id
    sudo docker volume inspect 47d003ff423ad06560cdc6e7892d420e7555753f447855fa1fd5ace8a07ab597
    
    #创建一个mysql2,查看对应的volume
    sudo docker run -d --name mysql2 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql 
    sudo docker volume ls
    sudo docker volume inspect 47d003ff423ad06560cdc6e7892d420e7555753f447855fa1fd5ace8a07ab597
    
    • 删除container 看看volume是否会消失
    sudo docker ps
    sudo docker stop mysql1 mysql2
    sudo docker rm mysql1 mysql2
    sudo docker volume ls
    sudo docker ps
    
    image.png
    • 现在的volume 名字不太友好啊,得起个别名
    sudo docker volume ls
    sudo docker volume rm 06bb873ed273c2957b3798b14ed5b90d2d15af3b921c2d6dd09fd25920eba75f
    sudo docker volume rm 47d003ff423ad06560cdc6e7892d420e7555753f447855fa1fd5ace8a07ab597
    sudo docker volume ls
    
    #volume的别名是mysql,只向的路径是/var/lib/mysql
    sudo docker run -d -v mysql:/var/lib/mysql --name mysql2 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql   
    sudo docker volume ls
    
    • 验证volume生效

    mysql容器放入数据,然后删除容器,在创建一个挂在容器,看看数据存在不存在。

    sudo docker exec -it mysql2 /bin/bash
    mysql -u root
    show databases;
    create database docker;
    show databases;
    exit;
    exit
    sudo docker ps
    sudo docker volume ls
    
    sudo docker rm -f mysql2
    sudo docker volume ls
    #挂在之前的mysql的volme
    sudo docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql 
    sudo docker ps
    sudo docker exec -it mysql1 /bin/sh
    mysql -u root
    #查看mysql数据库中的docker是否存在,结果存在
    show databases;
    

    PS:这个是数据持久化的一种方式通过volume的方式。


    往期精彩
    1. docker导学(一)
    2. 容器的技术概述(二)
    3. docker的魅力初体验-5分钟安装wordpress不走弯路(三)
    4. docker官网介绍(四)
    5. 如何在mac上安装docker(五)
    6. 如何在window上安装docker(六)
    7. 如何在mac上通过vagrant安装虚拟机(七)
    8. 如何在window上通过vagrant安装虚拟机(八)
    9. docker-Machine的本地使用(九)
    10. docker-Machine的本地使用(十)
    11. 在linux/mac下通过Docker-Machine在阿里云上的使用(11)
    12. docker架构和底层技术(12)
    13. docker Image概述(13)
    14. 手动建立一个base Image(14)
    15. 什么是Container(15)
    16. 构建自己的Docker镜像(16)
    17. Dockerfile详解(17)
    18. 镜像的发布(18)
    19. Dockerfile实战(19)
    20. 容器的操作(20)
    21. Dockerfile实战CMD和ENTRTYPOINT的配合(21)
    22. 容器的资源限制(22)
    23. docker网络(23)
    24. docker学习必会网络基础(24)
    25. Linux网络命名空间(25)
    26. Docker Bridge详解(26)
    27. 容器之间的Link(27)
    28. 容器的端口映射(28)
    29. 容器网络之host和none(29)
    30. 多容器复杂应用的部署(30)
    31. overlay网络和etcd实现多机的容器通信(31)
    32. docker的数据持久化存储和数据共享(32)
    33. windows下vagrant 通过SecureCRT连接centos7(33)

    相关文章

      网友评论

      本文标题:『中级篇』数据持久化之Data Volume(34)

      本文链接:https://www.haomeiwen.com/subject/usgjuftx.html