2015-01-06 45 views
3

如果迟早用Docker设置应用程序堆栈(无论是在一个容器中还是作为一系列链接的容器),都需要序列化用户数据 - 例如,数据库。从目前为止我可以看到,这可以通过两种方式完成:码头集装箱 - 用户数据

  • 使用-v开关将主机上的卷映射到Docker容器。
  • 创建这需要

没有问题,无论使用哪种方法时存储&恢复为和一个专用的数据容器 - 他们是容易实现,而且工作得很好。不过,有几件事情对我来说并不清楚:

  • 当一个数据容器实际上活着的地方实际上正在写入数据。例如,写入该容器内的/ var/lib/mysql文件夹的文件最终会在主机的文件系统中的某处出现?
  • 将主机系统子文件夹作为卷映射到Docker容器的风险有所不同,因为现在容器的用户能够直接写入主机的文件系统
  • 最后,有没有一种简单的方法限制该映射卷的大小?

我非常感谢任何帮助。

+3

您将通过仔细检查'docker inspect <您的正在运行的容器>'的输出,特别是'Volumes'部分,来得到第一个问题的答案。 –

回答

4

当数据容器实际上在数据实际正在写入的地方。例如,写入该容器内的/ var/lib/mysql文件夹的文件最终会在主机的文件系统中的某处出现?

未安装来自主机的体积都存储在这里: 的/ var/lib中/泊坞窗/卷/

什么是映射主机系统的子文件夹的卷上的风险要记住泊坞容器轴承,现在容器的用户能够直接

只要写入到主机的文件系统为您的容器没有privileged即与--privileged = true标志的容器运行无法访问设备并被锁定在主机fs的几个敏感部分。其次,默认情况下,docker中的所有进程都以root身份运行,这给了他们在容器内部的许多特权,并且由于docker并不保证安全的沙盒装入,可能有人在你的容器中攻击一个进程。因此,您应该在泊坞窗文件或-u标志中使用docker USER命令以作为备用用户运行进程。

最后,是否有一种简单的方法来限制映射卷的大小?

你必须在码头以外做,也许通过创建一个单独的逻辑驱动器,并根据您的需要调整大小。

+0

谢谢。你能否详细说明你的意思是没有特权和不使用root用户?只是阻止访问容器内的bash&sudo或其他东西? – DroidOS

+1

为你增加了一些更多的细节和链接 –

+0

谢谢@Usman Ismail。我无法再次提出您的答案,所以我提高了您的评论。所以你建议安全的做法是为主机上的Docker容器创建一个专用的用户,然后用docker run -u 启动容器。 – DroidOS