zoukankan      html  css  js  c++  java
  • 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
    
    本篇内容是参考网络教程学习过程中的笔记
    开发工作着,生活快乐着,留下总结,相互交流,共同进步
  • 相关阅读:
    安卓监听帧动画结束
    零基础学python-13.4 文件上使用列表解析与列表解析扩展
    零基础学python-13.3 列表解析简介与步骤分解
    零基础学python-13.2 手动迭代:iter和next
    零基础学python-13.1 迭代器简介与文件迭代器
    零基础学python-12.6 使用for和zip来并行使用多个序列
    零基础学python-12.5 修改列表的误区以及使用for和range修改列表
    零基础学python-12.4 while、for与range联合使用
    零基础学python-12.3 for循环
    零基础学python-12.2 关键字pass,else,break,continue
  • 原文地址:https://www.cnblogs.com/lovechengyu/p/15471639.html
Copyright © 2011-2022 走看看