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

来源:互联网 发布:注销阿里云 编辑:程序博客网 时间:2024/05/16 05:32

出品丨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 for Windows 17.11 版本发布,最新内容一睹为快吧!

  • Docker实用技巧合集,让你轻松应对日常工作!

  • Swarm、Kubernetes哪个更好用?看完这三点你就明白了!(上)

  • Swarm、Kubernetes哪个更好用?看完这三点你就明白了!(下)


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


阅读全文
0 0