以非root用户身份启动Mongodb容器

时间:2017-10-27 22:01:33

标签: mongodb docker docker-compose dockerfile

我正在使用官方mongodb docker来自mongo:3.2。在entrypoint.sh中,我正在使用副本模式重新启动Mongodb。 Mongodb进程由root用户拥有。有没有办法我可以由非root用户启动容器,并能够在副本集模式下重新启动mongodb。现在我收到以下错误。

2017-10-27T20:08:23.888 + 0000我在initAndListen中存储[initandlisten]异常:98无法创建/打开锁定文件:/data/db/mongod.lock errno:13权限被拒绝是mongod实例已经正在运行?,终止

我的泊坞窗文件是

FROM mongo:3.2
COPY entrypoint.sh /root/entrypoint.sh
ENTRYPOINT ["/root/entrypoint.sh"] here

谢谢,

3 个答案:

答案 0 :(得分:1)

当使用ENTRYPOINT,CMD,RUN指令启动/执行所需用户的过程时,您可以使用dockerfile中提供的USER命令。

语法:

USER <user>[:<group>]
USER <UID>[:<GID>]

示例:

FROM mongo:3.2
COPY entrypoint.sh /root/entrypoint.sh
USER deploy:root
ENTRYPOINT ["/root/entrypoint.sh"]

user2010672更新:(工作解决方案)

FROM mongo:3.2
COPY entrypoint.sh /root/entrypoint.sh
RUN chown -R mongodb:mongodb /var/log /data/db 
USER mongodb
ENTRYPOINT ["/root/entrypoint.sh"]

感谢user2010672

答案 1 :(得分:1)

使用docker-compose

@DisabledIf(expression = "#{systemProperties['CI'] == true}")
@DisabledIf(expression = "#{systemProperties['CI']")
@DisabledIf(expression = "#{systemProperties['CI'] == 'true'")
@DisabledIf(expression = "#{systemProperties['CI'] == 'true'")
@DisabledIf(expression = "#{systemProperties['CI'].equals("true")")

version: '3.5' services: yourmongo: image: mongo:xenial container_name: yourmongo restart: always user: 1000:1000 volumes: - ./yourmongo-folder:/data/db 是uid:gid(user-id:group-id)的选定值

答案 2 :(得分:0)

您可以使用标记 - 用户并使用用户:组格式

来自定义docker run命令上的用户