Docker 容器内运行的服务(如 MongoDB)通常以特定的用户和组运行。在官方 MongoDB Docker 镜像中,默认的用户和组都是 mongodb,其 UID 和 GID 通常是 999。你可以通过以下步骤来确认和检查 Docker 容器内的用户和组信息。

检查官方 MongoDB 镜像中的用户和组

  1. 启动一个临时的 MongoDB 容器

    启动一个 MongoDB 容器并进入其 shell:

    docker run -it --rm mongo:latest bash
  2. 检查用户和组信息

    在容器内运行以下命令以查看 MongoDB 用户和组信息:

    id mongodb

    或者查看 /etc/passwd 文件:

    grep mongodb /etc/passwd

    你会看到类似的输出:

    mongodb:x:999:999::/home/mongodb:/bin/bash

    这表明 mongodb 用户的 UID 和 GID 都是 999

设置 mongodb.key 文件的权限和所有者

  1. 设置文件权限

    确保 mongodb.key 文件的权限为 600

    chmod 600 ./mongodb.key
  2. 设置文件所有者

    将文件所有者设置为 999(或你在上一步检查到的用户 ID 和组 ID):

    sudo chown 999:999 ./mongodb.key

使用 Docker Compose 配置 MongoDB

创建或编辑 docker-compose.yml 文件,确保挂载 mongodb.key 文件,并正确配置 MongoDB 服务:

version: '3.8'

services:
  mongo:
    image: mongo:latest
    container_name: mongo
    volumes:
      - ./data/db:/data/db
      - ./data/configdb:/data/configdb
      - ./mongodb.key:/etc/mongodb.key
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
    command: mongod --keyFile /etc/mongodb.key --replSet rs0
    ports:
      - 27017:27017

启动 MongoDB 容器

使用 Docker Compose 启动 MongoDB 容器:

docker-compose up -d

检查容器日志

如果容器仍无法启动,请查看容器日志以获取错误信息:

docker logs mongo

通过这些步骤,你应该能够正确配置 mongodb.key 文件的权限和所有者,以确保 MongoDB 容器能够正常启动并访问该文件。