使用只读FS

时间:2016-06-30 13:52:05

标签: mongodb docker docker-compose

我想根据5.12出于安全原因启动一个只读fs的Mongo容器。

我有以下docker-compose.yml

version: '2'
services:
  mongodb:
    image: mongo:3.2
    command: -f /etc/mongo.conf
    volumes:
      - ./mongo/mongo.conf:/etc/mongo.conf:ro
      - /data/db
    user: mongodb
    read_only: true

docker-compose up上,它失败并显示错误Failed to unlink socket file /tmp/mongodb-27017.sock errno:30 Read-only file system

行。没问题。我可以将- /tmp添加到卷中。

但是,添加卷的每个路径是一种好的做法吗?还有其他一些路径要添加吗?像一些日志路径等等?

是否有来自Mongodb的列表?

1 个答案:

答案 0 :(得分:1)

TL; DR案例

您不需要只读容器,只应将您的用户保留为主机的非root用户,只挂载您真正需要的目录,并仅为已安装的目录管理permisiions。

完整答案

来自官方mongo docker imagebest usage practices of docker使用gosu更容易和方便的情况。在这种情况下,您的MongoDB将由非root用户运行,这应该足够安全。

从主机到容器未安装的所有目录都不会受到容器到主机的影响。例如,即使您删除了没有安装任何内容的容器内部系统的根,它也不会影响主机目录(但它会影响所有已安装的目录,因此如果您决定自己尝试,请务必小心=) )。

同样对于MongoDB /data/db目录,所有存储的db信息都写入所有信息“schemas”等,因此当它处于只读模式时,mongodb在任何情况下都不起作用。这就是为什么你可以从官方mongodb docker图像中看到来自docker-entrypoint.sh的mongodb的chown -R mongodb:mongodb /data/db行。