git://www.github.com/bitnami/bitnami-docker-mongodb.git
git clone http://www.github.com/bitnami/bitnami-docker-mongodb
$ svn co --depth empty http://www.github.com/bitnami/bitnami-docker-mongodb
Checked out revision 1.
$ cd repo
$ svn up trunk
是一个跨平台文档定向数据库。 基于 NoSQL 数据库,MongoDB避免了传统的基于表的关系数据库结构,使用动态模式的文档集成。
;DR ;$ docker run --name mongodb bitnami/mongodb:latest
$ curl -sSL https://raw.githubusercontent.com/bitnami/bitnami-docker-mongodb/master/docker-compose.yml > docker-compose.yml
$ docker-compose up -d
为什么使用Bitnami映像?获取Bitnami映像的推荐方法是从 Docker-Hub 注册中心提取预构建映像。
$ docker pull bitnami/mongodb:latest
要使用特定版本,可以提取带版本控制的标签。 你可以在 Docker-Hub 注册表中查看可用版本的列表。
$ docker pull bitnami/mongodb:[TAG]
如果你愿意,你也可以自己构建图像。
$ docker build -t bitnami/mongodb:latest https://github.com/bitnami/bitnami-docker-mongodb.git保存数据库
如果删除容器,所有数据和配置将丢失,并且下次运行映像时,数据库将重新初始化。 为了避免这些数据丢失,你应该挂载一个容器,即使在容器移除后仍然存在。
为了持久性,你应该在 /bitnami
路径上安装一个目录。 如果挂载的目录为空,它将在第一次运行时初始化。
$ docker run -v/path/to/mongodb-persistence:/bitnami bitnami/mongodb:latest
或者使用 Docker 撰写:
version: '2'services: mongodb: image: 'bitnami/mongodb:latest'ports: - "27017:27017"volumes: - /path/to/mongodb-persistence:/bitnami连接到其他容器
使用容器networking可以轻松地访问在容器内运行的MongoDB服务器,你的应用程序容器可以很容易地访问它。
连接到同一个网络的容器可以使用容器 NAME 作为主机名彼此通信。
在这个例子中,我们将创建一个MongoDB客户端实例,它将连接到与客户端在同一 Docker 网络上运行的服务器实例。
$ docker network create app-tier --driver bridge
使用 docker run
命令的--network app-tier
参数将MongoDB容器附加到 app-tier
网络。
$ docker run -d --name mongodb-server --network app-tier bitnami/mongodb:latest
最后,我们创建一个新的容器实例来启动MongoDB客户端并连接到上一步中创建的服务器:
$ docker run -it --rm --network app-tier bitnami/mongodb:latest mongo --host mongodb-server
如果没有指定,Docker 将自动设置一个新网络并将所有已经部署的服务连接到该网络。 但是,我们将显式定义一个名为 app-tier
的新 bridge
网络。 在这个示例中,假设你希望从你自己的自定义应用程序镜像连接到MongoDB服务器,该映像由服务 NAME myapp
在下面的Fragment中标识。
version: '2'networks: app-tier: driver: bridgeservices: mongodb: image: 'bitnami/mongodb:latest'networks: - app-tiermyapp: image: 'YOUR_APPLICATION_IMAGE'networks: - app-tier
重要:
mongodb
连接到MongoDB服务器使用以下命令启动容器:
$ docker-compose up -d配置
第一次运行 MONGODB_ROOT_PASSWORD
环境变量时,将 root
用户的密码设置为服务器上的MONGODB_ROOT_PASSWORD
和启用的身份验证。
$ docker run --name mongodb -e MONGODB_ROOT_PASSWORD=password123 bitnami/mongodb:latest
或者使用 Docker 撰写:
version: '2'services: mongodb: image: 'bitnami/mongodb:latest'ports: - "27017:27017"environment: - MONGODB_ROOT_PASSWORD=password123
配置 root
用户对MongoDB服务器具有完全管理访问权限。 如果未指定 MONGODB_ROOT_PASSWORD
,则服务器允许未经过身份验证和无限制的访问。
首次启动容器时,你可以创建具有对数据库的限制访问权限的用户。 为此,请提供 MONGODB_USERNAME
。MONGO_PASSWORD
和 MONGODB_DATABASE
环境变量 。
$ docker run --name mongodb -e MONGODB_USERNAME=my_user -e MONGODB_PASSWORD=password123 -e MONGODB_DATABASE=my_database bitnami/mongodb:latest
或者使用 Docker 撰写:
version: '2'services: mongodb: image: 'bitnami/mongodb:latest'ports: - "27017:27017"environment: - MONGODB_USERNAME=my_user - MONGODB_PASSWORD=password123 - MONGODB_DATABASE=my_database
注意:用户创建可以在MongoDB服务器上启用身份验证,因此不允许任何非用户进行身份验证。
使用以下,可以轻松使用 Bitnami MongoDB Docker 映像设置复制插件集群:
MONGODB_REPLICA_SET_MODE
: 复制模式可能的值 primary
/secondary
/arbiter
。 无默认值。MONGODB_REPLICA_SET_NAME
: MongoDB副本集 NAME 。 默认值:replicasetMONGODB_PRIMARY_HOST
: MongoDB主主机无默认值。MONGODB_PRIMARY_PORT_NUMBER
: MongoDB主端口默认值: 27017MONGODB_ADVERTISED_HOSTNAME
: MongoDB公布主机名没有默认值。 建议在遇到临时ip问题时传递这里环境变量。 设置of使复本集的节点配置为主机名而不是机器 IP 。仅用于身份验证:
MONGODB_REPLICA_SET_KEY
: MongoDB副本集密钥。 长度应为 GREATER 于 5个字符,不应包含任何特殊字符。 对于所有节点都需要。无默认值。MONGODB_ROOT_PASSWORD
: MongoDB root 密码无默认值。 仅用于主 node 。MONGODB_PRIMARY_ROOT_PASSWORD
: MongoDB主 root 密码。 无默认值。仅用于辅助节点和aribters节点。在复制群集中,可以以有一个主 node 。零或者更多辅助节点和零个或者一个仲裁器 node 。
注释: 副本集sceneraio上的节点总数不能高于 8 ( 1,6辅助和 1仲裁器)
第一步是启动MongoDB主程序。
$ docker run --name mongodb-primary -e MONGODB_REPLICA_SET_MODE=primary bitnami/mongodb:latest
在上面的命令中,容器使用 MONGODB_REPLICA_SET_MODE
参数配置为 primary
。
接下来我们启动一个MongoDB辅助容器。
$ docker run --name mongodb-secondary --link mongodb-primary:primary -e MONGODB_REPLICA_SET_MODE=secondary -e MONGODB_PRIMARY_HOST=primary -e MONGODB_PRIMARY_PORT_NUMBER=27017 bitnami/mongodb:latest
在上面的命令中,容器使用 MONGODB_REPLICA_SET_MODE
参数配置为 secondary
。 使用 MONGODB_PRIMARY_HOST
和 MONGODB_PRIMARY_PORT_NUMBER
参数连接并使用MongoDB主参数。
最后我们启动一个MongoDB仲裁容器。
$ docker run --name mongodb-arbiter --link mongodb-primary:primary -e MONGODB_REPLICA_SET_MODE=arbiter -e MONGODB_PRIMARY_HOST=primary -e MONGODB_PRIMARY_PORT_NUMBER=27017 bitnami/mongodb:latest
在上面的命令中,容器使用 MONGODB_REPLICA_SET_MODE
参数配置为 arbiter
。 使用 MONGODB_PRIMARY_HOST
和 MONGODB_PRIMARY_PORT_NUMBER
参数连接并使用MongoDB主参数。
现在,你有了3 个 node MongoDB复制集群,可以通过添加/删除secondarys来对它的进行。
使用 Docker 编写replicaset可以通过以下方式设置:
version: '2'services: mongodb-primary: image: 'bitnami/mongodb:latest'environment: - MONGODB_REPLICA_SET_MODE=primaryvolumes: - 'mongodb_master_data:/bitnami'mongodb-secondary: image: 'bitnami/mongodb:latest'depends_on: - mongodb-primaryenvironment: - MONGODB_REPLICA_SET_MODE=secondary - MONGODB_PRIMARY_HOST=mongodb-primary - MONGODB_PRIMARY_PORT_NUMBER=27017mongodb-arbiter: image: 'bitnami/mongodb:latest'depends_on: - mongodb-primaryenvironment: - MONGODB_REPLICA_SET_MODE=arbiter - MONGODB_PRIMARY_HOST=mongodb-primary - MONGODB_PRIMARY_PORT_NUMBER=27017volumes: mongodb_master_data: driver: local
或者,如果你想使用认证设置 replicaset,你可以使用以下 file:
version: '2'services: mongodb-primary: image: 'bitnami/mongodb:latest'environment: - MONGODB_REPLICA_SET_MODE=primary - MONGODB_ROOT_PASSWORD=password123 - MONGODB_REPLICA_SET_KEY=replicasetkey123volumes: - 'mongodb_master_data:/bitnami'mongodb-secondary: image: 'bitnami/mongodb:latest'depends_on: - mongodb-primaryenvironment: - MONGODB_REPLICA_SET_MODE=secondary - MONGODB_PRIMARY_HOST=mongodb-primary - MONGODB_PRIMARY_PORT_NUMBER=27017 - MONGODB_PRIMARY_ROOT_PASSWORD=password123 - MONGODB_REPLICA_SET_KEY=replicasetkey123mongodb-arbiter: image: 'bitnami/mongodb:latest'depends_on: - mongodb-primaryenvironment: - MONGODB_REPLICA_SET_MODE=arbiter - MONGODB_PRIMARY_HOST=mongodb-primary - MONGODB_PRIMARY_PORT_NUMBER=27017 - MONGODB_PRIMARY_ROOT_PASSWORD=password123 - MONGODB_REPLICA_SET_KEY=replicasetkey123volumes: mongodb_master_data: driver: local
使用以下方法缩放辅助节点的数量:
$ docker-compose scale mongodb-primary=1 mongodb-secondary=3 mongodb-arbiter=1
上面的命令将辅助节点的数量扩展到 3
。 你可以按同样的方式缩小比例。
注意 : 你不应该向上或者向下扩展主节点的数量。 始终只有一个主 node 运行。
副本集配置( 主。次或者仲裁) 中有三个不同的角色。 每个角色都以不同的方式配置:
主 node 配置:
使用 rs.initiate()
命令和一些配置选项启动副本集,以强制主节点成为主节点。 基本上,优先级从默认的( 1 ) 增加到 5. 要验证主代码实际上是主要的,我们使用 db.isMaster().ismaster
命令来验证它。
主 node 有一个附加卷,因此只要存在卷,就可以在部署之间保留数据。
这里外,主 node 初始化脚本将检查 /bitnami/mongodb
文件夹中是否存在一个 .initialized
文件,以确定它是否已经经初始化。
如果主要已经被杀死,卷被删除,以便在同一副本集中启动该容器,那么它的他成员已经经知道了。
次 node 配置:
一旦主 node 启动并运行,我们就可以开始添加辅助节点( 和仲裁器) 。 为此,辅助 node 连接主 node,并将它的自身添加为具有命令 rs.add(SECONDARY_NODE_HOST)
的辅助 node 。
添加辅助节点后,我们验证了它们已经通过执行 rs.status().members
成功地添加,以查看它们是否出现在列表中。
仲裁 node 配置:
最后,除了添加到副本集的命令是 rs.addArb(ARBITER_NODE_HOST)
之外,arbiters遵循与辅助节点相同的过程。 在主节点和辅助节点的总和为偶数时,应添加仲裁器。
图像在 /bitnami/mongodb/conf/
中查找配置。 如中提到的持久化数据库一样,可以在处装载卷,并复制/编辑/path/to/mongodb-persistence/mongodb/conf/
默认配置将被填充到 conf/
目录,如果它是空的。
运行MongoDB映像,从主机挂载一个目录。
$ docker run --name mongodb -v/path/to/mongodb-persistence:/bitnami bitnami/mongodb:latest
或者使用 Docker 撰写:
version: '2'services: mongodb: image: 'bitnami/mongodb:latest'ports: - "27017:27017"volumes: - /path/to/mongodb-persistence:/bitnami
使用你喜欢的编辑器编辑主机上的配置。
$ vi/path/to/mongodb-persistence/mongodb/conf/mongodb.conf
更改配置后,重新启动你的MongoDB容器以使更改生效。
$ docker restart mongodb
或者使用 Docker 撰写:
$ docker-compose restart mongodb
参考配置文件选项手册以获得MongoDB配置选项的完整列表。
日志记录Bitnami MongoDB Docker 映像将容器日志发送到 stdout
。 要查看日志:
$ docker logs mongodb
或者使用 Docker 撰写:
$ docker-compose logs mongodb
你可以使用 --log-driver
选项配置容器的日志记录驱动程序,如果你想使用不同的容器日志。 在默认配置 Docker 中,使用 json-file
驱动程序。
Bitnami提供了MongoDB的内置版本,包括安全补丁,这些补丁在它们被。 我们建议你按照以下步骤升级容器。
$ docker pull bitnami/mongodb:latest
或者,如果使用 Docker 组合,则将图像属性的值更新为 bitnami/mongodb:latest
。
使用命令停止当前正在运行的容器
$ docker stop mongodb
或者使用 Docker 撰写:
$ docker-compose stop mongodb
接下来,使用以下方法获取持久卷 /path/to/mongodb-persistence
的快照:
$ rsync -a/path/to/mongodb-persistence/path/to/mongodb-persistence.bkp.$(date +%Y%m%d-%H.%M.%S)
如果升级失败,则可以使用这里快照还原数据库状态。
$ docker rm -v mongodb
或者使用 Docker 撰写:
$ docker-compose rm -v mongodb
从新图像创建容器。
$ docker run --name mongodb bitnami/mongodb:latest
或者使用 Docker 撰写:
$ docker-compose start mongodb便笺更改
MONGODB_USER
参数已经被重命名为 MONGODB_USERNAME
。/bitnami/mongodb
处合并。 现在,你只需要在 /bitnami/mongodb
上装载一个单独的。stdout
,并且不再在卷中收集。我们希望你能为这个容器提供帮助。 可以通过创建一个问题来请求新特性,或者通过你的贡献提交请求请求。
问题如果遇到运行这里容器的问题,则可以文件 issue 。 要提供更好的支持,请确保在你的问题中包含以下信息:
docker version
)docker info
输出echo $BITNAMI_IMAGE_VERSION
)大多数实时通信发生在 #containers
通道的通道中;你可以在 slack.oss. bitnami.com 上注册。
讨论在 bitnami-oss.slackarchive.io 存档。
许可证版权所有( c ) 2015 -2018 Bitnami
在Apache许可以证下许可以证版本 2.0 ("许可以证") ;你可以能不使用这里文件,除了符合许可以证。 你可以获得许可证的副本在*
http://www.apache.org/licenses/LICENSE-2.0
在规定的法律或者书面许可下,在许可条款下分发的软件在不保证任何种类的担保或者条件的前提下分发,或者明示或者隐含。 查看许可协议下特定语言的许可权限和限制的许可证。