有一种方法可以将容器的/data/db
目录链接到localhost。但我找不到任何有关配置的信息。如何将/etc/mongo.conf
链接到本地文件系统中的任何内容。或者可能使用其他一些方法。请分享您的经验。
当您使用以下运行docker容器时:
docker run -d -v /var/lib/mongo:/data/db -v /home/user/mongo.conf:/etc/mongo.conf -p port:port image_name
/var/lib/mongo
是主持人的mongo文件夹。
/data/db
是docker容器中的一个文件夹。
我正在使用mongodb 3.4官方docker镜像。由于mongod默认不读取配置文件,因此我就是这样启动mongod服务的方法
docker run -d --name mongodb-test -p 37017:27017 \
-v /home/sa/data/mongod.conf:/etc/mongod.conf \
-v /home/sa/data/db:/data/db mongo --config /etc/mongod.conf
删除-d将显示容器的初始化
使用docker-compose.yml:
version: '3'
services:
mongodb_server:
container_name: mongodb_server
image: mongo:3.4
env_file: './dev.env'
command:
- '--auth'
- '-f'
- '/etc/mongo.conf'
volumes:
- '/home/sa/data/mongod.conf:/etc/mongod.conf'
- '/home/sa/data/db:/data/db'
ports:
- '37017:27017'
出于某种原因,我应该使用带有VERSION的MongoDb:3.0.1
现在:2016-09-13 17:42:06
这就是我发现的:
#first step: run mongo 3.0.1 without conf
docker run --name testmongo -p 27017:27017 -d mongo:3.0.1
#sec step:
docker exec -it testmongo cat /entrypoint.sh
#!/bin/bash
set -e
if [ "${1:0:1}" = '-' ]; then
set -- mongod "$@"
fi
if [ "$1" = 'mongod' ]; then
chown -R mongodb /data/db
numa='numactl --interleave=all'
if $numa true &> /dev/null; then
set -- $numa "$@"
fi
exec gosu mongodb "$@"
fi
exec "$@"
我发现有两种方法可以启动mongod服务。我尝试了什么:
docker run --name mongo -d -v your/host/dir:/container/dir mongo:3.0.1 -f /container/dir/mongod.conf
-f
是mongod参数,你也可以用--config
代替。your/host/dir
这样的路径存在并且文件中包含mongod.conf
。我只想通过docker run
命令知道用于指定mongo配置的命令。
首先,您要使用-v
指定卷标志,以将文件或目录从主机映射到容器。因此,如果您有一个位于/home/ubuntu/
的配置文件并希望将其放在容器的/etc/
文件夹中,您可以使用以下命令指定它:
-v /home/ubuntu/mongod.conf:/etc/mongod.conf
然后为mongo指定命令,以便在图像之后读取配置文件,如下所示:
mongo -f /etc/mongod.conf
如果你把它们放在一起,你会得到这样的东西:
docker run -d --net="host" --name mongo-host -v /home/ubuntu/mongod.conf:/etc/mongod.conf mongo -f /etc/mongod.conf