Docker容器-用户数据

Docker容器-用户数据,docker,Docker,如果您使用Docker设置应用程序堆栈(在一个容器中或作为一系列链接容器),迟早会需要序列化用户数据,例如数据库。从我迄今为止所看到的情况来看,这可以通过两种方式实现 使用-v开关将主机上的卷映射到Docker容器 创建一个专用数据容器,在需要时进行存储和恢复 这两种方法都没有问题——它们很容易实现,工作也很好。然而,有几件事我并不清楚: 当数据容器实际处于活动状态时,实际写入数据的位置。例如,写入该容器中的/var/lib/mysql文件夹的文件是否最终位于主机文件系统的某个位置 将主机

如果您使用Docker设置应用程序堆栈(在一个容器中或作为一系列链接容器),迟早会需要序列化用户数据,例如数据库。从我迄今为止所看到的情况来看,这可以通过两种方式实现

  • 使用-v开关将主机上的卷映射到Docker容器
  • 创建一个专用数据容器,在需要时进行存储和恢复
这两种方法都没有问题——它们很容易实现,工作也很好。然而,有几件事我并不清楚:

  • 当数据容器实际处于活动状态时,实际写入数据的位置。例如,写入该容器中的/var/lib/mysql文件夹的文件是否最终位于主机文件系统的某个位置
  • 将主机系统子文件夹作为卷映射到Docker容器会有什么风险?请记住,现在容器的用户可以直接写入主机的文件系统
  • 最后,有没有一种简单的方法来限制映射卷的大小
我非常感谢你在这方面的帮助

当数据容器实际处于活动状态时,实际写入数据的位置。例如,写入该容器中的/var/lib/mysql文件夹的文件是否最终位于主机文件系统的某个位置

未从主机装入的卷存储在此处: /var/lib/docker/volumes/

将主机系统子文件夹作为卷映射到Docker容器会有什么风险?请记住,现在容器的用户可以直接写入主机的文件系统

只要您的容器没有使用--privileged=true标志运行,您的容器就无法访问设备,并且被主机的几个敏感部分锁定。第二,默认情况下,docker中的所有进程都以root运行,这给了它们在容器中的许多特权,因为docker不能保证安全的沙盒,但可能会有人入侵容器中的进程。因此,您应该使用docker文件中的docker命令或标志以备用用户身份运行流程

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


您必须在docker外部执行此操作,可能需要创建一个单独的逻辑驱动器并根据您的需要调整其大小。

您可以通过仔细检查
docker inspect
的输出,特别是
部分,来回答第一个问题。谢谢。您能详细说明一下您所说的“无特权”和“不使用root用户”是什么意思吗?只是在容器内或其他地方阻止访问bash&sudo?添加了更多细节和youThanks@Usman Ismail的一些链接。我无法再次对你的答案投赞成票,所以我对你的评论投了赞成票。因此,您建议安全实践是,比如说,在主机中为Docker容器创建一个专用用户,然后使用Docker run-u启动容器?