Docker:使用预存数据构build一个mongodb图像

我正在build立一个mongodb图像。 出于某种原因,数据目录需要放置在映像中,需要提供一个configuration文件,以便映像文件可以加载到另一台服务器上并直接运行。 所以我在这里下载Dockerfile / docker-entrypoint.sh:

https://github.com/docker-library/mongo/tree/58bdba62b65b1d1e1ea5cbde54c1682f120e0676/3.6

并对Dockerfile进行一些更改:

#VOLUME / data / db / data / configdb

复制docker-entrypoint.sh / usr / local / bin /

入口点[“docker-entrypoint.sh”]

COPY mongo.cnf /mongo.cnf

USER mongodb

COPY Theme.json /tmp/Theme1.json

RUN(nohup mongod -f /mongo.cnf> / dev / null 2>&1&)\

&& mongoimport -d SIA -c主题 – 文件/tmp/Theme1.json \

&& mongod – closures

EXPOSE 27017

#CMD [“mongod”]

CMD [“mongod”,“-f”,“/mongo.cnf”]

生成成功,但容器无法启动:

2017-12-21T16:32:02.024 + 0000 I – [initandlisten]检测到由'wiredTiger'存储引擎创build的/ data / db中的数据文件,因此将主动存储引擎设置为“wiredTiger”。

2017-12-21T16:32:02.024 + 0000 I STORAGE [initandlisten] wiredtiger_open config:create,cache_size = 7512M,session_max = 20000,eviction =(threads_min = 4,threads_max = 4),config_base = false,statistics =(fast)login=(启用=真,档案= TRUE,path=杂志,压缩机=活泼),file_manager =(close_idle_time = 100000),statistics_log =(等待= 0),详细=(recovery_progress)

WiredTiger错误(2)[1513873922:31861] [1:0x7f88beb53980],连接:/data/db/journal/WiredTigerPreplog.0000000001:file-remove:unlink : 无此文件或目录

没有这样的文件或目录src / mongo / db / storage / wiredtiger / wiredtiger_kv_engine.cpp 409

2017-12-21T16:32:02.033 + 0000在initAndListen中存储[initandlisten]exception:Location28595:2:没有这样的文件或目录,终止

2017-12-21T16:32:02.033 + 0000 I NETWORK [initandlisten] shutdown:closures侦听套接字…

2017-12-21T16:32:02.033 + 0000 I NETWORK [initandlisten] shutdown:正在刷新diaglog …

2017-12-21T16:32:02.033 + 0000 I CONTROL [initandlisten]现在退出

2017-12-21T16:32:02.033 + 0000 I CONTROL [initandlisten]用代码:100closures

如果我使用原始的Dockerfile来build立图像,在交互模式下运行它,然后执行mongod / mongoimport,这很好。 那么从Dockerfile RUN执行命令并在容器中执行它们有什么区别呢?