当前位置: 首页 > news >正文

[docker] Docker的数据卷、数据卷容器,容器互联

一、数据卷(容器与宿主机之间数据共享) 

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

想要将容器中的数据持久化,可以将宿主机目录挂载到容器中。

一般只建议在创建容器时进行挂载,不建议启动容器后再挂载。因为启动容器后再挂载的话,需要修改配置文件,且不一定能挂载成功。

 docker run -v 数据卷              #在容器内创建数据卷​docker run -v 宿主机目录:数据卷    #将宿主机目录挂载到容器中#注意:宿主机本地目录的路径必须是使用绝对路径。如果路径不存在,Docker会自动创建相应的路径。#挂载后的目录默认可读可写docker run -id --name tomcat1 -v /opt/:/mnt/ tomcat:9.0

 #如果希望挂载后的目录为只读目录,可以在挂载时加:ro参数docker run -v 宿主机目录:数据卷:ro    #将宿主机目录挂载到容器中,只可读docker run -id --name tomcat2 -v /opt/:/mnt:ro tomcat:9.0

 

二、数据卷容器(容器与容器之间数据共享) 

有时时候,容器之间共享一些数据,最简单的方法就是使用数据卷容器。数据卷容器是一个普通的容器,专门提供数据卷给其他容器挂载使用。 

#创建数据卷容器co1。创建/data1和/data2两个数据卷。docker run -id --name co1 -v /data1 -v /data2 -itd centos:7docker exec -it co1 bash                #进入web2容器#使用--volumes-from 来挂载co1容器中的数据卷到新的容器co2docker run -id --volumes-from co1 --name co2 centos:7docker exec -it co2 bash       #进入web3容器

 

三、容器互联(使用centos镜像) 

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

3.1 实现容器互联

#创建并运行源容器取名c1docker run -itd -P --name c1 centos:7 /bin/bash#创建并运行接收容器取名c2,使用--1ink选项指定连接容器c1以实现容器互联。docker run -itd -P --name c2 --link c1:c2 centos:7 /bin/bash##--link 容器名:连接的别名​#进c2容器,ping c1,通过容器名称或者别名都可以通信docker exec -it c2 bash#可以看到c1容器的IP地址​#进入c1容器,查看c1的IP地址docker exec -it c1 bashyum install -y net-tools   #下载网络工具ifconfig                   #查看IP和c2中显示的一致

 

3.2 只通过IP进行通信  

#创建容器c3,没有与c1做互联docker run -itd -P --name c3 centos:7 /bin/bashdocker exec -it c3 bash      #进入容器c3#通过c1的容器名称和别名,都无法和c1通信ping c1        #提示:ping: c1: Name or service not knownping C1        #提示:ping: C1: Name or service not known#只能通过IP进行通信

 

总结

命令说明
docker run -v 宿主机目录:数据卷将宿主机的目录挂载到容器的目录
docker run -v 数据卷指定创建容器的目录为数据卷,可供其他容器挂载
docker run --volumes-from 数据卷容器挂载数据卷容器(挂载点路径不变
docker run --link 源容器名称:别名容器互联

注意:一般只建议在创建容器时进行挂载,不建议启动容器后再挂载。

因为启动容器后再挂载的话,需要修改配置文件,且不一定能挂载成功

相关文章:

  • Gradle学习笔记:Gradle的简介、下载与安装
  • uniapp组件库Modal 模态框 的使用方法
  • Python全自动性能无人机
  • ChatGPT4账号升级心得
  • yolov8 opencv dnn部署 github代码
  • HarmonyOS 鸿蒙应用开发( 六、实现自定义弹窗CustomDialog)
  • composer安装hyperf后,nginx配置hyperf
  • Java链表(1)
  • 14、Kafka ------ kafka 核心API 之 流API(就是把一个主题的消息 导流 到另一个主题里面去)
  • 25考研每日的时间安排
  • 6 时间序列(不同位置的装置如何建模): GRU+Embedding
  • 批量数据之DataX数据同步
  • 制作一个简单的HTML个人网站
  • flink学习之窗口处理函数
  • 【算法练习】leetcode算法题合集之动态规划篇
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • HashMap ConcurrentHashMap
  • iOS 颜色设置看我就够了
  • JavaScript服务器推送技术之 WebSocket
  • JS题目及答案整理
  • leetcode-27. Remove Element
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Python学习笔记 字符串拼接
  • Solarized Scheme
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 搭建gitbook 和 访问权限认证
  • 多线程事务回滚
  • 工作中总结前端开发流程--vue项目
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 前端相关框架总和
  • 前端性能优化——回流与重绘
  • 前端之React实战:创建跨平台的项目架构
  • 使用SAX解析XML
  • 收藏好这篇,别再只说“数据劫持”了
  • 学习使用ExpressJS 4.0中的新Router
  • 智能网联汽车信息安全
  • ​ArcGIS Pro 如何批量删除字段
  • # 达梦数据库知识点
  • #include<初见C语言之指针(5)>
  • (1)(1.11) SiK Radio v2(一)
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (C#)一个最简单的链表类
  • (C语言)fread与fwrite详解
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (三)c52学习之旅-点亮LED灯
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (转) Face-Resources
  • (转)JAVA中的堆栈
  • (转)Sublime Text3配置Lua运行环境
  • .a文件和.so文件