ubuntu-14.04 – 在Ubuntu 14.04 docker容器中Mongodb安装失败

前端之家收集整理的这篇文章主要介绍了ubuntu-14.04 – 在Ubuntu 14.04 docker容器中Mongodb安装失败前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在docker容器中的ubuntu 14.04上安装 mongodb,使用我的Dockerfile中官方mongodb指南中的以下步骤:
RUN sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
RUN echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
RUN apt-get update && apt-get -q -y install \
    nodejs\
    npm \
    git \
    mongodb-org

这些命令在我的主机ubuntu系统上正确安装mongodb,但在docker中没有.在我的docker镜像中,/ etc / init.d / mongod不存在.运行“docker build”时会打印以下错误

invoke-rc.d: unknown initscript,/etc/init.d/mongod not found.
invoke-rc.d: policy-rc.d denied execution of start.
ref: stack overflow

如上所述,原因是您正在尝试安装为Upstart init服务打包的版本,但默认情况下ubuntu 14.04仍然使用SysV init.建议的方法是使用here之后的版本3.2.x,或者如果您对版本严格,则使用该修复程序

deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen

代替

deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse

另外,要在使用docker run -d启动时运行mongod,需要向其添加CMD.
所以,我修改并编译了一个docker文件来测试它,看起来像这样:

FROM ubuntu:14.04

RUN sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 \
  && echo "deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list \
  && apt-get update && apt-get -q -y install \
    nodejs\
    npm \
    git \
    mongodb-org 

CMD ["mongod","--dbpath","."]

请注意,我没有使用init来启动容器,因为init脚本将mongod放在后台(除了许多其他东西).要使docker容器连续运行,CMD脚本应位于前台.

来自/etc/init.d/mongod start()的剪辑注意那里的–background

# Start the process using the wrapper
    start-stop-daemon --background --start --quiet --pidfile $PIDFILE \
                --make-pidfile --chuid $DAEMONUSER \
                --exec $NUMACTL $DAEMON $DAEMON_OPTS

猜你在找的Ubuntu相关文章