• Docker笔记(二)容器数据卷进阶


    容器数据卷

    什么是容器数据卷

    数据存在容器,容器删除,数据就会丢失,如何做到数据持久化?

    目的:就是数据的持久化,完全独立与容器的生命周期,因此Docker不会在容器删除时删除其挂载的数据卷。

    特点

    1:数据卷可以在容器之间共享或重用数据。

    2:数据卷中的更改可以直接生效。

    3:数据卷中的更改不会包含在镜像的更新中。

    4:数据卷的生命周期一直持续到没有容器使用它为止。

    具名挂载与匿名挂载

    我们通过具名挂载可以方便的找到我们的一个卷,大多数情况在使用的|具名挂载

    #如何确定是具名挂载还是匿名挂载,还是指定路径挂载!
    -v容器内路径
    #匿名挂载
    -v卷名:容器内路径#具名挂载
    -v/宿主机路径:容器内路径#指定路径挂载!
    

    拓展︰

    #通过-v容器内路径:ro rw改变读写权限
    ro  readonly #只读
    rw  readwrite#可读可写
    
    #一旦这个了设置了容器权限,容器对裁们挂载出来的内容就有限定了!
    docker run -d -p --name nginx02 -v juming-nginx : /etc/nginx:ro nginxdocker run -d - --name nginx02 -v juming-nginx:/etc/nginx:rw nginx
    
    # ro只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作!
    

    用法

    方式一 :使用命令挂载

    docker run -it -v  /宿主机绝对路径目录:/容器内目录
    
    # 示例
    docker run -it -v /home/ceshi:/home centos /bin/bash
    # 通过docker inspect [容器id] 查看容器详细配置
            "Mounts": [
                {
                    "Type": "bind",
                    "Source": "/home/ceshi", # 主机内地址
                    "Destination": "/home",  # 容器内地址
                    "Mode": "",
                    "RW": true,
                    "Propagation": "rprivate"
                }
            ]
    
    

    方式二 :使用Dockerfile挂载

    Dockerfile 用来构建docker镜像的构建文件

    # 指令大写
    FROM centos
    
    VOLUME ["volume01","volume02"]
    
    CMD echo "----end----"
    CMD /bin/bash
    

    数据卷容器

    实现容器建数据共享

    # 启动docker01,并创建test.md文件
    # docker run -it --name docker01 test/centos:1.0
    
    [root@node1 docker-test-volume]# docker run -it --name docker01 test/centos:1.0
    [root@a45217dfa119 /]# ls
    bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  volume01	volume02
    [root@a45217dfa119 /]# cd volume01
    [root@a45217dfa119 volume01]# touch test.md
    
    
    # 启动docker02,通过--volumes-from继承docker01配置
    # docker run -it --name docker02 --volumes-from docker01 test/centos:1.0
    # 查看volume01下也存在test.md
    
    [root@node1 ~]# docker run -it --name docker02 --volumes-from docker01 test/centos:1.0
    [root@1611bfa5128f /]# cd volume01
    [root@1611bfa5128f volume01]# ls
    test.md
    

    实战

    一、安装mysql

    # 1.0 获取mysql镜像
    docker pull mysql:5.7
    # 2.0 启动mysql
    # -d 后台运行   -p 端口映射  -v数据卷挂载  -e 环境配置   --name容器名
    docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/confg.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
    
    本篇内容是参考网络教程学习过程中的笔记
    开发工作着,生活快乐着,留下总结,相互交流,共同进步
  • 相关阅读:
    hdu 3715(二分+2-sat)
    hdu 3622(二分+2-sat判断可行性)
    hdu 3062+1824(2-sat入门)
    【转载】lucene中Field.Index,Field.Store详解
    【转载】那些年我们一起清除过的浮动demo
    【转载】那些年我们一起清除过的浮动
    【转载】Visaul Studio 常用快捷键的动画演示
    【转载】各浏览器CSS兼容问题
    【转载】HTTP 错误 500.19
    【转载】Memcached在.Net中的基本操作
  • 原文地址:https://www.cnblogs.com/lovechengyu/p/15471639.html
Copyright © 2020-2023  润新知