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

一 背景

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

二 实验步骤

2.1 创建容器

容器一:gysl-1

[[email protected] ~]# docker run -it --rm --name gysl-1 -v /data-1 alpine

容器二:gysl-2

[[email protected] ~]# 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,命令如下:

[[email protected] ~]# docker volume ls
DRIVER              VOLUME NAME
local               8126b3ad828a9a7e29ec04f4d7a1901be5e40ca6157fde62dca3421322e5de7a
local               bf80e1eb66685161cb6bf6943079de4a68a7bc3db3bba241347ed051fe59fc46
[[email protected] ~]# 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

原文地址:http://blog.51cto.com/3842834/2341794

时间: 2024-11-07 21:14:00

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

Docker中的镜像与容器

docker的整个生命周期有三部分组成:镜像(image)+容器(container)+仓库(repository): 容器是由镜像实例化而来,这和我们学习的面向对象的概念十分相似,我们可以把镜像看作类,把容器看作类实例化后的对象. docker 的镜像概念类似虚拟机的镜像.是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器.(  docker create <image -id > :为指定的镜像添加一个可读写层,构成一个新的容器:) 例如:一个镜像可以包含一

docker 安装nginx &nbsp; 批量启动 容器间链接

docker 安装在这里就不详细解说了 安装nginx FROM centos RUN rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm RUN yum -y install nginx EXPOSE 80 ENTRYPOINT nginx && tailf /var/log/nginx/error.log docker-compose.ym

[转] 如何批量删除Docker中已经停止的容器

[From]https://blog.csdn.net/csdn_duomaomao/article/details/78587103 方法一: #显示所有的容器,过滤出Exited状态的容器,取出这些容器的ID, sudo docker ps -a|grep Exited|awk '{print $1}' #查询所有的容器,过滤出Exited状态的容器,列出容器ID,删除这些容器 sudo docker rm `docker ps -a|grep Exited|awk '{print $1}'

docker中 启动所有的容器命令

docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)

学习API 设置卷的挂载点,列举指定卷中具有的挂载点和路径

#define _WIN32_WINNT 0x0501#include <windows.h>#include <stdio.h>#include <tchar.h>#define BUFSIZE MAX_PATH#define FILESYSNAMEBUFSIZE MAX_PATH/*************************************** ProcessVolumeMountPoint* 功能:列举挂载点*********************

centos7中docker文件挂载,容器中没有执行权限

在centos7中运行NodeJs的容器,发现挂载的本地目录在容器中没有执行权限,经过各种验证和Google搜索,找到了问题的原因,这里做一下记录.原因是centos7中的安全模块selinux把权限禁掉了,至少有以下三种方式解决挂载的目录没有权限的问题: 1,在运行容器的时候,给容器加特权: 示例:docker run -i -t --privileged=true -v /home/docs:/src waterchestnut/nodejs:0.12.0 2,临时关闭selinux: 示例

docker中两个容器间的互访

在前几篇文章中,我们讨论了如何在Ubuntu14.04(64位)中安装docker,以及如何在docker中部署一个apache服务器并在外部电脑中访问该服务器,和在docker中部署 一个mysql数据库并在外部电脑中访问这个数据库. 下面来讨论下docker的容器间的互访,主要以两个容器间的mysql数据库互访为例. 有时候,两个启动的容器之间是需要交流的,比如我们在一个容器中运行了一个apache服务器,上面有一个网站,然后网站的数据库我们就可以部署在另外一个容器中.或者两个容器都部署了数

使用docker搭建nfs实现容器间共享文件

首先介绍下今天的两个主角:nfs和docker nfs 是什么 NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源.在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样. 摘自百度百科 docker 是什么 这个就不多说了,近两年一个非常流行的东西哦. 主角介绍完毕,那么要说说为什么要使用docker来搭建nfs,其实本文标题已经说明,主要

有容云——窥探Docker中的Volume Plugin内幕

编者注: 本文根据有容云技术实施团队原创分享内容整理.对Docker技术感兴趣.或对本文中细节需继续探讨的朋友,欢迎加入我们参与讨论! 特别鸣谢中生代技术群分享支持. 注:本期分享由张朝潞原创,有容云整理发布,转载请注明出处 作者介绍: 张朝潞,有容云(Yourun Cloud)平台存储架构师.曾工作于UIT,华三,腾讯,专注分布式存储的研究和开发,对云计算存储解决方案方面有很深的技术造诣和行业理解. 本次交流将与大家分享Docker Volume plugin相关的内容.今日主题是窥探Dock