zoukankan      html  css  js  c++  java
  • DOCKER 05:数据持久化

    本文主要谈谈数据如何持久化保存下来!

    数据持久化 volume

    在服务环境中,更多的时候我们想要的是将容器的某些数据保存下来,如服务的日志,MySQL 的数据等等。

    如果不做其他的配置,在容器删除之后,数据也会随之删除,这显然不符合我们用户的需求。

    查看本机的 volume:

    docker volume ls

    默认情况下应该是空的,如果你的不是,可能是之前运行过 redis 的原因,因为我现在已经删除了所有容器。

    这里以一个 MySQL 容器为例,其中涉及到的参数可以参考以下链接:

    https://github.com/docker-library/docs/tree/master/mysql

    运行 MySQL 容器:

    docker container run -d --name mysql-demo -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:5.7

    设置 MySQL 登陆不需要密码!

    docker container run -d --name mysql-demo -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:5.7

    进入容器创建数据库:

    docker container exec -it mysql-demo /bin/sh

    结果如图:

    此时查看 volume 情况:

    docker volume ls

    结果如图:

    在查看容器详情的时候可以看到:

    docker container inspect mysql-demo

    结果如图:

    此时我们删除容器:

    docker container rm -f mysql-demo

    结果如图:

    可以发现容器虽然删除了,但是 volume 保留了下来。

    此时我们重新运行一个 MySQL 容器挂载上这个 volume 看看效果:

    docker container run -d --name mysql-demo-1 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -v 426303e50c95cf029e4943728f4a5a6d1041620cf52916f52a02b8e008d1df42:/var/lib/mysql mysql:5.7

    注意红色部分就是将 volume 挂载到容器的数据目录 /var/lib/mysql。

    重新登录容器查看:

    发现这个库又回来了!

    当然如果你觉得这个名字很奇怪那么你在创建容器的时候就应该制定好:

    docker container run -d --name mysql-demo-2 -v mysql-volume-demo:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:5.7

    查看 volume:

    这样就完成了数据持久化保存下来的工作!

    数据持久化 Mount

    另外一种数据持久化的方法则是将容器的某个目录挂载到宿主机的某个目录,这样也能实现持久化。

    这里以一个 nginx 的容器为例:

    # 宿主机创建需要挂载的目录
    mkdir /data/html -p
    
    # 创建容器
    docker container run -d --name nginx-demo -v /data/html:/usr/share/nginx/html -p 8000:80 nginx

    此时再在宿主机目录创建 html 文件:

    cd /data/html/
    vim index.html

    内容如下:

    <h1>Hello docker</h1>

    使用浏览器访问:

    这样就实现容器的某个目录挂载到了宿主机本地!此时就算你删除容器,只要下一个 nginx 容器挂载这个目录依然能够继续使用。

  • 相关阅读:
    select 标签的数据绑定
    JQ选择器-选择符合条件的元素,获取对应关系元素
    Velocity中判断表达式是不是为空
    重要的serialVersionUID
    编译nginx的时候报错 需要安装PCRE
    Mac 允许安装任何来源的app
    Charles
    Excel_日期和时间函数、EDATE、EOMONTH
    项目9: 成绩中国式排名(难度:中等)
    Mysql:IFNULL的使用说明
  • 原文地址:https://www.cnblogs.com/Dy1an/p/12366993.html
Copyright © 2011-2022 走看看