码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Docker的数据管理


    文章目录

      • Docker的数据管理
        • 前言
        • 一、数据卷
          • 1、数据卷原理
          • 2、数据卷作用
          • 3、数据操作
        • 二、数据卷容器
          • 1、数据卷容器作用
          • 2、数据卷容器操作
        • 三、容器互联

    Docker的数据管理

    前言

    docker有一个很明显的问题, 关闭并启动容器, 其数据不受影响, 但是删除docker 容器, 则其改变将会全部消失。

    一、数据卷

    1、数据卷原理
    • 数据卷默认会一直存在,即使容器被删除。
    • 宿主机和容器时两个不同的命名空间,如果想进行连接需要使用ssh、exec和attch这一类登录方式实现。
    • 在企业中ssh这种登录方式会比较危险,安全漏洞大,尽量减少ssh这种,杜绝频繁使用exec。
    • 因此使用数据卷的方式把容器内部的文件目录挂载到宿主机指定目录下进行修改,当容器里的文件频繁需要修改时不需要登陆,直接使用数据卷方式在宿主机指定的目录下进行修改即可。
    • 个人理解就是类似rsync的数据同步。
    2、数据卷作用

    数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移。数据卷的使用类似于linux下对目录进行的mount操作。

    3、数据操作
    docker run -itd -v
        -v 绑定一个卷
    
    • 1
    • 2
    //单容器配置:
        docker run -itd -v /opt/test:/data --name test centos:7
        docker exec -it test /bin/bash   
    
    • 1
    • 2
    • 3

    image-20220907225213720

    //两个容器挂载同一目录:
        docker run -itd -v /opt/test:/data2 --name test2 centos:7
        docker exec -it test2 /bin/bash   
    
    • 1
    • 2
    • 3

    image-20220907225557934

    其实就是挂载了同一个目录,数据都是同一个。

    二、数据卷容器

    1、数据卷容器作用
    • 让两个容器实现数据共享
    • 如果需要在容器之间共享一些数据,最简单的方法就是使用数据卷容器。数据卷容器是一个普通的容器,专门提供数据卷给其他容器挂载使用。
    • php ---->mysql之间想要通讯,通过socket
    2、数据卷容器操作
    #创建一个容器作为数据卷容器
    docker run -it --name test1 -v /data1 -v /data2 centos:7 bash	#创建并进入容器
    echo "this is test02 file" > /data1/test.txt		  	#容器内创建测试文件1
    echo "THIS IS TEST2 FILE" > /data2/TEST.txt					#容器内创建测试文件2
    
    #使用--volumes-from来挂载test2容器中的数据卷到新的容器
    docker run -it --name test2 --volumes-from test1 centos:7 bash	#创建并进入容器
    cat data1/test.txt											#查看测试数据是否同步
    cat data2/TEST.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    image-20220907230456365

    三、容器互联

    容器互联是通过容器的名称在容器间建立一条专门的网络通信隧道。简单点说,就是会在源容器和接收容器之间建立一条隧道,接收容器可以看到源容器指定的信息。

    #创建并运行源容器取名web1
    docker run -itd -P --name test1 centos:7 /bin/bash	
    	
    #创建并运行接收容器取名web2,使用--link选项指定连接容器以实现容器互联
    docker run -itd -P --name test2 --link test1:test1 centos:7 /bin/bash			#--link 容器名:连接的别名
    
    #进web2 容器, ping test1
    docker exec -it test2 bash
    ping test1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    image-20220908003129854
    cker exec -it test2 bash
    ping test1

    
    [外链图片转存中...(img-s9c99Usk-1663501649469)]
    
    • 1
    • 2
  • 相关阅读:
    Dubbo 与 Spring Cloud 完美结合
    微信小程序怎么通过图片链接获取图片宽高比(适合在下载图片前获取宽高比)
    【Lilishop商城】No3-2.模块详细设计,运营用户模块的详细设计
    LVM分区空间扩充
    Springboot足球运动员训练计划管理系统的设计与实现 毕业设计-附源码281444
    无向图三元环计数(根号算法)
    在word、ppt、excel编辑软件标题栏顶部左上角加入自定义功能:另存为、导出PDF
    Vue2基础
    数据结构(3)基础查找算法——顺序查找、二分查找(JAVA版)
    WordPress主题开发( 八)之—— 模板循环详细用法
  • 原文地址:https://blog.csdn.net/weixin_46514551/article/details/126922084
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号