如何在docker-compose中以只读模式设置docker

如何在docker-compose中以只读模式设置docker

许多指南表明,最好将容器置于 read_only 模式。

但是,在docker-compose中该怎么做呢?很多容器至少会保存日志,所以需要r+w权限。

如何将容器设置为只读模式?我在网上找到的所有解决方案都不起作用。

如果您在服务器上设置了此功能并且知道哪种解决方案有效,请回答。

答案1

您可以使用以下方式将容器设置为只读模式:只读给定服务的密钥:

version: "3.8"
services:
  test:
    image: busybox
    read_only: true
    command: sleep 999

这有效地删除了容器的写入层,这意味着Read-only file system如果任何进程尝试写入容器的文件系统,您将收到错误。

如果您是镜像作者,您当然需要考虑到这一点。容器化软件期望能够写入的任何位置都应作为卷安装。镜像作者应使用指令在 Dockerfile 中标记每个这样的位置VOLUME。当生成的容器镜像运行时,匿名卷将以读写模式附加到该位置。在运行时,如果匿名卷不合适,您可以在同一位置指定命名卷或绑定安装。

您给出的读/写用例示例是日志记录。Docker 包含自己的日志子系统将容器中主进程的 stdout/stderr 视为日志流。即使容器处于只读模式,此方法也能正常工作,因此请配置您的应用程序以以这种方式写入日志。

容器中读写要求的其他示例是数据库或任何其他希望将数据保存到磁盘的系统。无论您是否使用该read_only功能,该数据都应进入卷,而不是容器的文件系统。

相关内容