提升Docker效率的小操作——用volume实现容器和主机之间共享数据

出品丨Docker公司(ID:docker-cn)

编译丨小东

每周一、三、五晚6点10分  与您不见不散


说在前面


Docker是一个非常强大的工具,它帮助企业扩大产品规模,并简化部署容器化应用程序的流程。对于Docker来说,创建一个容器实际上非常简单:您只需要拉取一个镜像,并将其部署成容器就可以了。但是这个容器该如何保存数据呢?换言之,您要如何处理这些数据呢?又或者说,您要如何在容器之间共享这些数据呢?


Docker 容器的机制是由一系列只读层构成,其最上层包含一个最终的读写层。这是一个非常复杂的系统——称为联合文件系统(UFS)


当您不需要保留数据时,该文件系统可以很好的完成该任务。但是,当您需要停止、重新部署一个容器并需要保留数据时,那该怎么办呢? 为了能够保存数据(或者在容器之间共享数据),您必须用到volumes 。Docker  volume 是存在于主机文件系统上(在联合文件系统之外)的目录(或文件)。


您该如何创建和管理这些volumes ?接下来,跟着我找出答案吧!我将在Ubuntu Server 16.04平台上使用Docker的最新版本。不管您使用的是什么主机操作系统,使用volumes的流程都是相同的。


创建一个标准的volume


让我们创建一个名为“volume1”的volume 。这是通过如下命令完成的:


docker volume create --name volume1


如果我们输入“docker volume ls”的命令,那么我们刚刚创建的“volume1”将出现在图1的列表中。


(图1)我们刚刚创建的“volume1”准备就绪


您可以通过输入docker volume inspect volume1”的命令来获取更多关于“volume1”的详细信息。该命令的输出结果(图2)将显示“volume1”的名称、选项、挂载点等相关信息。


(图2)关于“volume1”的细节


然而,并不是所有标准的volume都是有用的。接下来,让我们创建一个可以让Docker 容器变得更加灵活的volume吧。


创建一个主机数据volume


现在,我们要做的就是部署一个新的容器(基于最新的Ubuntu镜像),这个容器包含一个附着在主机目录上的volume。这意味着您可以在该容器内工作并将数据保存到容器目录中,同时这些容器目录中的数据将与主机目录同步。您必须做的第一件事就是确保创建了主机目录。我们将使用如下命令来创建一个名为“container-data”的目录:

mkdir ~/container-data


确保在Docker用户可以访问的位置来创建上述目录。实际上,您可以在系统的任何位置创建该目录(只要用户具有读写权限)。使用该目录,部署容器的命令(将主机目录附着到容器volume,它位于容器内的/ data目录下)将是:


docker run -d -P --name test-container -v /home/jack/container-data:/data ubuntu


现在,您应该可以看到容器ID了,记下前四个字符,我们来测试一下。在shell界面,对正在运行的容器使用如下命令:


docker attach ID(其中ID是运行容器的前四个字符)


其中ID是运行容器的前四个字符。


现在,您的光标应该出现在bash提示符处。如果您输入“ls /”的命令,您应该能看到那个我们在容器运行时添加的数据目录。接下来,我们创建一个带有“touch / data / test”命令的测试文件。然后,回到主机的终端,并输入ls ~/ container-data的命令。您应该可以看到列出的测试文件。现在,再从同一终端输入touch ~/ container-data / test2的命令。最后,返回到我们的容器shell界面并输入ls / data命令,这时应该会同时出现test和test2两个文件。这时,您运行的容器正在共享主机文件上的数据。


您可以根据需要将尽可能多的容器附加到该主机目录上,每个容器(以及主机)都可以访问相同的数据。正如Larry David 所说:“这真的是非常、非常、非常的方便”。


让Docker变得更加有用


利用Volumes是一个使Docker容器变得更加有用的好方法。Volumes 可以帮助您备份数据,在容器之间共享数据,甚至可以在容器和主机之间共享数据。登录Official Docker Docks了解有关卷的更多信息。同时关注docker公司官方公众号,获取更多中文版官方咨询和使用教程。



点击下列标题,阅读更多干货



如果本文对你有帮助,欢迎分享到朋友圈!获取更多Docker实用技巧,扫描下图二维码!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值