让我向您解释一下问题:
我们需要一个 rsfile.key。
mkdir keys
openssl rand -base64 768 > rsfile.key
rskey.file
权限不能太开放,如果太开放,MongoDB 将无法启动。我们必须将 rskey.file 移动到 Docker,因此 Docker 必须访问 rskey.file。首先设置 chmod 600。
sudo chmod 600 ./keys/
这不起作用。 MongoDB 拒绝工作,因为权限过于开放。也许是因为所有权? MongoDB 在 Docker 容器中通常使用 999。
sudo chown 999:999 ./keys/rsfile.key
然后,MongoDB 可以访问该文件,但 Docker 由于权限更加模糊而无法将文件移动到容器。如果我们不这样做chown 999:999
,MongoDB 将无法访问该文件,但 Docker 可以将文件移动到容器中。
如果我们设置文件夹而不是文件的所有权,并让 Docker 将文件夹移动到容器中,
sudo chmod 0444 ./keys/
这又不起作用了。 docker 内的 MongoDB 无法读取只读文件夹内的文件。
#!/bin/bash
mkdir keys
openssl rand -base64 768 > rsfile.key
sudo cp rsfile.key ./keys/rsfile.key
sudo chmod 0444 ./keys/
sudo chown 999:999 ./keys/rsfile.key
# Start MongoDB service
docker-compose up -d
mongodb:
container_name: mongodb
...
volumes:
- ./container-data/mongo/db:/data/db
- ./keys/:/etc/mongodb/pki/
我应该在这里做什么?
答案1
该目录需要可访问:
chmod 700 keys
这将使密钥文件在容器内可见。那么需要限制文件本身的权限:
chmod 600 keys/rsfile.key
请注意,Docker 不会移动或复制文件,它通过挂载包含卷来使它们在容器中可用。