一 背景

在实际使用过程中,我们可能会经常遇到容器间数据共享的情况,怎么处理呢?通过 docker 命令中的一些选项,我们即可完成容器间的数据共享。

二 实验步骤

2.1 创建容器

容器一:gysl-1

[root@dev ~]# docker run -it --rm --name gysl-1 -v /data-1 alpine

容器二:gysl-2

[root@dev ~]# docker run -it --rm --volumes-from gysl-1 --name gysl-2 alpine

2.2 验证数据共享情况

在容器gysl-1创建文件:gysl-1.txt

/ # cd data-1/
/data-1 # touch gysl-1.txt

在容器gysl-2创建文件:gysl-2.txt

/ # cd data-1/
/data-1 # touch gysl-2.txt

分别在两个容器查看:

/data-1 # ls -lh
total 0
-rw-r--r--    1 root     root           0 Jan 10 18:45 gysl-1.txt
-rw-r--r--    1 root     root           0 Jan 10 18:47 gysl-2.txt

两个容器的data-1目录下的内容完全一致。

三 总结

3.1 当一个容器的volume被其他容器共享时,其他容器是不需要创建共享目录的,共享目录会在其他容器内被自动创建,与被共享容器的目录名称一致。

3.2 一个容器的volume可以被多个容器同时共享。

3.3 当容器被删除时,volume不会被自动删除。如果数据不会再次被使用,那么可以通过手动来删除已经废弃的volume,命令如下:

[root@dev ~]# docker volume ls
DRIVER              VOLUME NAME
local               8126b3ad828a9a7e29ec04f4d7a1901be5e40ca6157fde62dca3421322e5de7a
local               bf80e1eb66685161cb6bf6943079de4a68a7bc3db3bba241347ed051fe59fc46
[root@dev ~]# docker volume prune
WARNING! This will remove all volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0 B

也可以:

docker volume rm volume_name

还可以(在删除容器的同时强制删除volume):

docker rm -vf container_name

Docker中未指定挂载点容器间volume卷的数据共享相关推荐

  1. Docker的常用管理命令Docker将数据挂载到容器的三种方式

    文章目录 镜像管理命令 容器管理常用命令 docker run常用参数 Docker run的其他参数 docker 创建容器命令 容器资源限制 docker管理容器常用命令 docker将数据挂载到 ...

  2. Docker中无法正常结束容器的解决思路 - Docker cannot kill or stop container

    Docker中无法正常结束容器的解决思路 - Docker cannot kill or stop container 步骤 查找无法删除的容器的ID: # docker ps |grep " ...

  3. docker中启动所有的容器命令

    docker中启动所有的容器命令 前提:在3A服务器上部署docker环境 docker中 启动所有的容器命令 docker start $(docker ps -a | awk '{ print $ ...

  4. Docker中操作镜像和容器的常用命令

    场景 CentOS7中Docker的安装与配置: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119028701 在上面将Doc ...

  5. Docker中部署项目到容器

    场景 使用Dockerfile定制镜像来部署Tomcat项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/99105626 D ...

  6. 对于Docker中已存在的容器,进入方法(以MongoDB为例)

    1.查询出MongoDB的ID并复制 docker ps -a 该方法也可查询出容器名称,也可不使用ID,使用名称也没问题 2.Docker执行容器 将此处的id替换为MongoDB的ID(可为容器名 ...

  7. Docker学习:容器间数据挂载与共享 | 远程共享挂载数据卷 | sshfs挂载远程volume | 容器内部通过sshfs访问远程主机 | -v |--volumes-from(实战篇)

    前言 本讲是从Docker系列讲解课程,单独抽离出来的一个小节,主要介绍宿主.容器间数据共享,它的好处自然不言而喻,Tomcat集群就是这么玩儿的(多个tomcat服务,对应一套web应用). 核心原 ...

  8. Docker 入门系列(4)- Docker 数据管理(挂载目录、挂载文件、数据卷挂载、数据卷共享、数据卷删除、数据卷容器备份和恢复)

    基于底层存储实现,Docker 提供了三种适用于不同场景的文件系统挂载方式:Bind Mount.Volume 和 Tmpfs Mount. Bind Mount 能够直接将宿主操作系统中的目录和文件 ...

  9. docker容器网络 - 同一个host下的容器间通信

    2019独角兽企业重金招聘Python工程师标准>>> 对于复杂的应用,不可避免需要多个服务部署在多个容器中,并且服务间存在相互间通信的情况.比如服务A需要连接mysql的容器.本文 ...

最新文章

  1. Mac OS 提高工作效率的几个快捷键
  2. 加码IoT生态圈:爱立信携手客户及合作伙伴共筑物联网之梦
  3. Windows环境下maven 安装与环境变量配置
  4. 从堆里找回“丢失”的代码
  5. opencv:图像的基本变换
  6. mysql密码过期问题
  7. 编程实现启用禁用网卡
  8. activemq 重启后java程序_ActiveMQ持久化机制代码实例
  9. enclosing type java_Java ResolvedJavaType.getEnclosingType方法代码示例
  10. 基于face_recognition构建的人脸识别系统以及相关应用
  11. python获取淘宝服务器时间的代码
  12. Redis下载安装全过程教程(非常详细,适用于个人学习使用)
  13. Android必知App 常用图标尺寸规范汇总
  14. 服务器软件firmware的作用(BIOS、BMC、PSOC、CPLD)
  15. 百度×TCL丨鸿鹄语音芯片首次在家电行业量产!
  16. PMP学习考试感悟之——坚持、努力是唯一法宝
  17. 更改windows 2003 密钥
  18. Kanzi制作的应用能在鸿蒙系统中运行吗?
  19. App渠道统计方法全面解析 总有一种适合你
  20. i春秋网络内生安全试验场CTF夺旗赛(第二季)部分Web题WriteUp

热门文章

  1. html 怎么使用http请求数据类型,HTTP请求方式中8种请求方法(简单介绍)
  2. python弹球游戏绑定鼠标事件_用python和pygame游戏编程入门-弹球[鼠标控制]
  3. java break 在if 中使用_java中使用国密SM4算法详解
  4. 每天九点十分开始每半小时一次执行一个cron_每天通勤4小时!西咸双城生活的上班族,不简单...
  5. linux怎样以root用户运行,如何在Linux机器中以root用户身份运行Elastic...
  6. php改成IP连接数据库,thinkphp,pdo连接数据库,host自动被替换成了本机ip
  7. 【theano-windows】学习笔记九——softmax手写数字分类
  8. Spark streaming java代码
  9. java中的内部类总结
  10. Mysql - 安装与配置