【Docker】MongoDB 容器化部署

MongoDB docker 容器化部署

MongoDB标准软件基于Bitnami MongoDB 构建。当前版本未7.0.5

你可以通过轻云UC部署工具直接安装部署,也可以手动按如下文档操作
配置文件地址: https://gitee.com/qingplus/qingcloud-platform

Qinghub Studio 在线体验

初始化一个新实例

使用Docker 容器网络,应用程序容器可以轻松访问容器内运行的 MongoDB® 服务器。

连接到同一网络的容器可以使用容器名称作为主机名来相互通信。

使用命令行

在此示例中,我们将创建一个 MongoDB® 客户端实例,该实例将连接到与客户端在同一 Docker 网络上运行的服务器实例。

第 1 步:创建网络
docker network create app-tier --driver bridge
步骤 2:启动 MongoDB® 服务器实例

使用命令–network app-tier的参数, docker run将 MongoDB® 容器连接到网络app-tier。

docker run -d --name mongodb-server \
    --network app-tier \
    registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest
步骤 3:启动 MongoDB® 客户端实例

最后,我们创建一个新的容器实例来启动 MongoDB® 客户端并连接到上一步中创建的服务器:

docker run -it --rm \
    --network app-tier \
    registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest mongo --host mongodb-server

使用 Docker Compose 文件

如果未指定,Docker Compose 会自动设置一个新网络并将所有已部署的服务附加到该网络。但是,我们将显式定义一个bridge名为app-tier的新网络。在此示例中,我们假设您希望从您自己的自定义应用程序映像连接到 MongoDB® 服务器,该映像在以下代码片段中通过服务名称进行标识myapp。

version: '2'

networks:
  app-tier:
    driver: bridge

services:
  mongodb:
    image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest'
    networks:
      - app-tier
  myapp:
    image: 'YOUR_APPLICATION_IMAGE'
    networks:
      - app-tier

重要

替换YOUR_APPLICATION_IMAGE占位符
在您的应用程序容器中,使用主机名mongodb连接到 MongoDB® 服务器

启动容器:

docker-compose up -d

配置

初始化一个新实例

当容器第一次执行时,它将执行扩展名为.sh和.js的文件,位于/docker-entrypoint-initdb.d.

为了将自定义文件放入 docker 映像中,您可以将它们挂载为卷。

将额外的命令行标志传递给 mongod 启动

可以通过以下环境变量将额外的命令行标志传递给 mongod 服务命令:

  • MONGODB_EXTRA_FLAGS:要附加到mongod启动命令的标志。无默认值
  • MONGODB_CLIENT_EXTRA_FLAGS:要附加到mongo用于连接到(本地或远程)mongod守护程序的命令的标志。无默认值
docker run --name mongodb -e ALLOW_EMPTY_PASSWORD=yes -e MONGODB_EXTRA_FLAGS='--wiredTigerCacheSizeGB=2' registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest

或者通过修改docker-compose.yml文件:

services:
  mongodb:
  ...
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - MONGODB_EXTRA_FLAGS=--wiredTigerCacheSizeGB=2
  ...

配置系统日志详细级别

可以通过以下环境变量配置系统日志详细级别:

  • MONGODB_DISABLE_SYSTEM_LOG:是否启用/禁用 MongoDB® 上的系统日志。默认:false。可能的值:[true, false].
  • MONGODB_SYSTEM_LOG_VERBOSITY:MongoDB® 系统日志详细级别。默认:0。可能的值:[0, 1, 2, 3, 4, 5]. 有关详细级别的更多信息,请参阅MongoDB® 文档
docker run --name mongodb -e ALLOW_EMPTY_PASSWORD=yes -e MONGODB_SYSTEM_LOG_VERBOSITY='3' registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest

或者通过修改docker-compose.yml文件:

services:
  mongodb:
  ...
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - MONGODB_SYSTEM_LOG_VERBOSITY=3
  ...

使用numactl

为了启用使用 numactl 启动命令,请将MONGODB_ENABLE_NUMACTL变量设置为 true。有关这方面的更多信息,请查看官方 [MongoDB 文档][( https://docs.mongodb.com/manual/administration/development-notes/#configuring-numa-on-linux )

启用/禁用 IPv6

可以通过以下环境变量启用/禁用 IPv6:

  • MONGODB_ENABLE_IPV6:是否在 MongoDB® 上启用/禁用 IPv6。默认:false。可能的值:[true, false]
    要启用 IPv6 支持,您可以执行:

docker run --name

或者通过修改docker-compose.yml文件:

services:
  mongodb:
  ...
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - MONGODB_ENABLE_IPV6=yes
  ...

启用/禁用directoryPerDB

可以通过以下环境变量启用/禁用directoryPerDB :

  • MONGODB_ENABLE_DIRECTORY_PER_DB:是否在 MongoDB® 上启用/禁用directoryPerDB。默认:true。可能的值:[true, false]
docker run --name mongodb -e ALLOW_EMPTY_PASSWORD=yes -e MONGODB_ENABLE_DIRECTORY_PER_DB=yes registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest

或者通过修改docker-compose.yml文件:

services:
  mongodb:
  ...
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - MONGODB_ENABLE_DIRECTORY_PER_DB=yes
  ...

启用/禁用日志记录

可以通过以下环境变量启用/禁用日志:

  • MONGODB_ENABLE_JOURNAL:是否在 MongoDB® 上启用/禁用日志记录。默认:true。可能的值:[true, false]
docker run --name mongodb -e ALLOW_EMPTY_PASSWORD=yes -e MONGODB_ENABLE_JOURNAL=true registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest

或者通过修改docker-compose.yml文件:

services:
  mongodb:
  ...
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - MONGODB_ENABLE_JOURNAL=true
  ...

首次运行时设置 root 用户和密码

首次运行映像时传递环境变量会将MONGODB_ROOT_USER的密码设置为MONGODB_ROOT_PASSWORD的值。并在 MongoDB® 服务器上启用身份验证。如果未设置MONGODB_ROOT_USER,则默认为root.

docker run --name mongodb \
  -e MONGODB_ROOT_PASSWORD=password123 registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest

或者通过修改docker-compose.yml文件:

services:
  mongodb:
  ...
    environment:
      - MONGODB_ROOT_PASSWORD=password123
  ...

用户MONGODB_ROOT_USER配置为具有 MongoDB® 服务器的完全管理访问权限。如果MONGODB_ROOT_PASSWORD未指定,服务器允许未经身份验证且不受限制的访问。

首次运行时创建用户和数据库

您可以在首次启动容器时创建对数据库具有受限访问权限的用户。为此,请提供MONGODB_USERNAME、MONGODB_PASSWORD和MONGODB_DATABASE环境变量。

docker run --name mongodb \
  -e MONGODB_USERNAME=my_user -e MONGODB_PASSWORD=password123 \
  -e MONGODB_DATABASE=my_database registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest

或者通过修改docker-compose.yml文件:

services:
  mongodb:
  ...
    environment:
      - MONGODB_USERNAME=my_user
      - MONGODB_PASSWORD=password123
      - MONGODB_DATABASE=my_database
  ...

警告!
创建用户可以在 MongoDB® 服务器上进行身份验证,因此不允许任何用户进行未经身份验证的访问。

设置复制

可以使用以下环境变量复制集群:

  • MONGODB_REPLICA_SET_MODE:复制模式。可能的值 primary/secondary/arbiter没有默认值。
  • MONGODB_REPLICA_SET_NAME:MongoDB® 副本集名称。默认值:replicaset
  • MONGODB_PORT_NUMBER:每个 MongoDB® 将使用的端口。默认值:27017
  • MONGODB_INITIAL_PRIMARY_HOST:MongoDB® 初始主主机,一旦创建副本集,任何节点最终都可以升级为主节点。没有默认值。
  • MONGODB_INITIAL_PRIMARY_PORT_NUMBER:MongoDB® 初始主节点端口,如其他节点所见。默认值:27017
  • MONGODB_ADVERTISED_HOSTNAME:MongoDB® 公布的主机名。没有默认值。如果您遇到临时 IP 问题,建议传递此环境变量。设置此环境变量会使副本集的节点配置主机名而不是机器 IP。
  • MONGODB_ADVERTISE_IP:MongoDB® 广告主机名设置为容器 IP。默认值:false。覆盖MONGODB_ADVERTISED_HOSTNAME
  • MONGODB_ADVERTISED_PORT_NUMBER:MongoDB® 公布的端口号。没有默认值。如果您有将请求转发到容器的代理端口,建议传递此环境变量。
  • MONGODB_REPLICA_SET_KEY:MongoDB® 副本集密钥。长度应大于 5 个字符,且不应包含任何特殊字符。所有节点都需要。无默认值。
  • MONGODB_ROOT_USER:MongoDB® root 用户名。默认值:root.
  • MONGODB_ROOT_PASSWORD:MongoDB® root 密码。没有默认值。仅适用于主节点。
  • MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD:MongoDB® 初始主 root 密码。没有默认值。仅适用于辅助节点和仲裁节点。
    在复制集群中,您可以有一个主节点、零个或多个辅助节点以及零个或一个仲裁节点。

注意:副本集场景下节点总数不能超过8个(1个主节点、6个从节点和1个仲裁节点)

步骤1:创建复制主数据库

第一步是启动 MongoDB® 主数据库。

docker run --name mongodb-primary \
  -e MONGODB_REPLICA_SET_MODE=primary \
  -e MONGODB_ADVERTISED_HOSTNAME=mongodb-primary \
  -e MONGODB_ROOT_PASSWORD=password123 \
  -e MONGODB_REPLICA_SET_KEY=replicasetkey123 \
  registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest

在上面的命令中,容器被配置为primary,使用MONGODB_REPLICA_SET_MODE参数。

步骤2:创建复制辅助节点

接下来我们启动一个 MongoDB® 辅助容器。

docker run --name mongodb-secondary \
  --link mongodb-primary:primary \
  -e MONGODB_REPLICA_SET_MODE=secondary \
  -e MONGODB_ADVERTISED_HOSTNAME=mongodb-secondary \
  -e MONGODB_INITIAL_PRIMARY_HOST=mongodb-primary \
  -e MONGODB_INITIAL_PRIMARY_PORT_NUMBER=27017 \
  -e MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD=password123 \
  -e MONGODB_REPLICA_SET_KEY=replicasetkey123 \
  registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest

在上面的命令中,容器被配置为secondary使用MONGODB_REPLICA_SET_MODE参数。MONGODB_INITIAL_PRIMARY_HOST和参数MONGODB_INITIAL_PRIMARY_PORT_NUMBER用于连接 MongoDB® 主数据库。

步骤3:创建复制仲裁节点

最后我们启动一个 MongoDB® 仲裁器容器。

docker run --name mongodb-arbiter \
  --link mongodb-primary:primary \
  -e MONGODB_REPLICA_SET_MODE=arbiter \
  -e MONGODB_ADVERTISED_HOSTNAME=mongodb-arbiter \
  -e MONGODB_INITIAL_PRIMARY_HOST=mongodb-primary \
  -e MONGODB_INITIAL_PRIMARY_PORT_NUMBER=27017 \
  -e MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD=password123 \
  -e MONGODB_REPLICA_SET_KEY=replicasetkey123 \
  registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest

在上面的命令中,容器被配置为arbiter使用MONGODB_REPLICA_SET_MODE参数。MONGODB_INITIAL_PRIMARY_HOST和参数MONGODB_INITIAL_PRIMARY_PORT_NUMBER用于连接 MongoDB® 主数据库。

您现在已经启动并运行了一个三节点 MongoDB® 复制集群,可以通过添加/删除辅助节点来扩展该集群。

可选:创建复制隐藏节点

如果我们想要一个复制hidden 节点,我们启动一个 MongoDB® hidden容器。

docker run --name mongodb-hidden \
  --link mongodb-primary:primary \
  -e MONGODB_REPLICA_SET_MODE=hidden \
  -e MONGODB_ADVERTISED_HOSTNAME=mongodb-hidden \
  -e MONGODB_INITIAL_PRIMARY_HOST=mongodb-primary \
  -e MONGODB_INITIAL_PRIMARY_PORT_NUMBER=27017 \
  -e MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD=password123 \
  -e MONGODB_REPLICA_SET_KEY=replicasetkey123 \
  registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest

在上面的命令中,容器被配置为hidden使用MONGODB_REPLICA_SET_MODE参数。MONGODB_INITIAL_PRIMARY_HOST和参数MONGODB_INITIAL_PRIMARY_PORT_NUMBER用于连接 MongoDB® 主数据库。

通过 Docker Compose,可以使用以下命令设置副本集:

version: '2'

services:
  mongodb-primary:
    image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest'
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-primary
      - MONGODB_REPLICA_SET_MODE=primary
      - MONGODB_ROOT_PASSWORD=password123
      - MONGODB_REPLICA_SET_KEY=replicasetkey123

    volumes:
      - 'mongodb_master_data:/bitnami'

  mongodb-secondary:
    image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest'
    depends_on:
      - mongodb-primary
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-secondary
      - MONGODB_REPLICA_SET_MODE=secondary
      - MONGODB_INITIAL_PRIMARY_HOST=mongodb-primary
      - MONGODB_INITIAL_PRIMARY_PORT_NUMBER=27017
      - MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD=password123
      - MONGODB_REPLICA_SET_KEY=replicasetkey123

  mongodb-arbiter:
    image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest'
    depends_on:
      - mongodb-primary
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-arbiter
      - MONGODB_REPLICA_SET_MODE=arbiter
      - MONGODB_INITIAL_PRIMARY_HOST=mongodb-primary
      - MONGODB_INITIAL_PRIMARY_PORT_NUMBER=27017
      - MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD=password123
      - MONGODB_REPLICA_SET_KEY=replicasetkey123

volumes:
  mongodb_master_data:
    driver: local

并使用以下命令运行 docker-compose:

docker-compose up --detach

如果您想使用 docker-compose 参数扩展辅助节点的数量–scale,则不得在 mongodb-secondary 和 mongodb-arbiter 定义中设置 MONGODB_ADVERTISED_HOSTNAME。

version: '2'

services:
  mongodb-primary:
    image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest'
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-primary
      - MONGODB_REPLICA_SET_MODE=primary
      - MONGODB_ROOT_PASSWORD=password123
      - MONGODB_REPLICA_SET_KEY=replicasetkey123

    volumes:
      - 'mongodb_master_data:/bitnami'

  mongodb-secondary:
    image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest'
    depends_on:
      - mongodb-primary
    environment:
      - MONGODB_REPLICA_SET_MODE=secondary
      - MONGODB_INITIAL_PRIMARY_HOST=mongodb-primary
      - MONGODB_INITIAL_PRIMARY_PORT_NUMBER=27017
      - MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD=password123
      - MONGODB_REPLICA_SET_KEY=replicasetkey123

  mongodb-arbiter:
    image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest'
    depends_on:
      - mongodb-primary
    environment:
      - MONGODB_REPLICA_SET_MODE=arbiter
      - MONGODB_INITIAL_PRIMARY_HOST=mongodb-primary
      - MONGODB_INITIAL_PRIMARY_PORT_NUMBER=27017
      - MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD=password123
      - MONGODB_REPLICA_SET_KEY=replicasetkey123

volumes:
  mongodb_master_data:
    driver: local

然后使用以下命令运行 docker-compose:

docker-compose up --detach --scale mongodb-primary=1 --scale mongodb-secondary=3 --scale mongodb-arbiter=1

上述命令将辅助节点的数量增加到3。您可以用同样的方法缩小规模。

注意:您不应增加/减少主节点的数量。始终只有一个主节点在运行。
注意:在这种情况下,客户端必须位于同一个 docker 网络中才能访问所有节点。

副本集是如何配置的?

副本集配置中有四种不同的角色(primary, secondary, hidden or arbiter)。这些角色中的每一个都以不同的方式配置:

primary节点配置:

副本集通过rs.initiate()命令和一些配置选项启动,以强制主数据库成为主数据库。基本上,优先级从默认值 (1) 增加到 5。为了验证主节点实际上是主节点,我们使用命令对其进行验证db.isMaster().ismaster。

主节点附加了一个卷,因此只要该卷存在,数据就会在部署之间保留。

此外,主节点初始化脚本将检查文件夹/bitnami/mongodb是否存在文件.initialized,以判断是否应该创建新的副本集,或者相反,副本集已经被初始化。

如果主节点被杀死并且卷被删除,为了在同一个副本集中再次启动它,重要的是使用原始 IP 启动容器,以便副本集的其他成员已经知道它。

secondary节点配置:

一旦主节点启动并运行,我们就可以开始添加辅助节点(和仲裁器)。为此,辅助节点连接到主节点并使用命令将自身添加为辅助节点rs.add(SECONDARY_NODE_HOST)。

添加辅助节点后,我们通过执行查看它们rs.status().members是否出现在列表中来验证它们是否已成功添加。

arbiter节点配置:

仲裁器遵循与辅助节点相同的过程,但将其添加到副本集的命令是rs.addArb(ARBITER_NODE_HOST)。当主节点与从节点之和为偶数时,应添加仲裁器。

hidden节点配置:

最后,隐藏节点遵循与辅助节点相同的过程,除了将其添加到副本集的命令为rs.add(host: HIDDEN_NODE_HOST, hidden: true, priority: 0})。

启用 SSL/TLS

该容器支持通过设置 和MONGODB_EXTRA_FLAGS环境MONGODB_CLIENT_EXTRA_FLAGS变量以及正确的MONGODB_ADVERTISED_HOSTNAME. 在启动集群之前,您需要根据 Mongo 的要求生成 PEM 证书 - 一种方法是使用openssl(参见http://www.openssl.org)创建自签名证书。

按所述生成的证书不用于生产用途

生成自签名证书
  • 生成一个新的私钥,用于创建您自己的证书颁发机构 (CA):
openssl genrsa -out mongoCA.key 2048
  • 为您自己的 CA 创建公共证书:
openssl req -x509 -new \
    -subj "/C=US/ST=NY/L=New York/O=Example Corp/OU=IT Department/CN=mongoCA" \
    -key mongoCA.key -out mongoCA.crt
  • 为节点创建证书签名请求${NODE_NAME},这里的重要部分是对应Common Name于节点寻址的主机名。示例mongodb-primary:
export NODE_NAME=mongodb-primary
openssl req -new -nodes \
    -subj "/C=US/ST=NY/L=New York/O=Example Corp/OU=IT Department/CN=${NODE_NAME}" \
    -keyout ${NODE_NAME}.key -out ${NODE_NAME}.csr
  • 从证书签名请求创建证书,并使用之前创建的证书颁发机构的私钥对其进行签名:
openssl x509 \
    -req -days 365 -in ${NODE_NAME}.csr -out ${NODE_NAME}.crt \
    -CA mongoCA.crt -CAkey mongoCA.key -CAcreateserial -extensions req
  • 使用私钥和公共证书创建 PEM 捆绑包:
cat ${NODE_NAME}.key ${NODE_NAME}.crt > ${NODE_NAME}.pem

注意:此后您不需要证书签名请求。

rm ${NODE_NAME}.csr

重复此过程,为集群中的所有节点生成 PEM 捆绑包。

启动集群

生成证书并使它们可用于正确挂载点(如:/certificates/)的容器后,可以按照以下示例设置环境变量。

主节点的设置示例mongodb-primary:

  • MONGODB_ADVERTISED_HOSTNAME=mongodb-primary

  • MONGODB_EXTRA_FLAGS=–tlsMode=requireTLS --tlsCertificateKeyFile=/certificates/mongodb-primary.pem --tlsClusterFile=/certificates/mongodb-primary.pem --tlsCAFile=/certificates/mongoCA.crt

  • MONGODB_CLIENT_EXTRA_FLAGS=–tls --tlsCertificateKeyFile=/certificates/mongodb-primary.pem --tlsCAFile=/certificates/mongoCA.crt
    辅助节点的相应设置示例mongodb-secondary:

  • MONGODB_ADVERTISED_HOSTNAME=mongodb-secondary

  • MONGODB_EXTRA_FLAGS=–tlsMode=requireTLS --tlsCertificateKeyFile=/certificates/mongodb-secondary.pem --tlsClusterFile=/certificates/mongodb-secondary.pem --tlsCAFile=/certificates/mongoCA.crt

  • MONGODB_CLIENT_EXTRA_FLAGS=–tls --tlsCertificateKeyFile=/certificates/mongodb-secondary.pem --tlsCAFile=/certificates/mongoCA.crt

通过 SSL 连接到 mongo 守护进程

按照指定成功启动集群后,在容器内应该可以使用以下命令连接到主节点上的 mongo 守护进程:

/opt/bitnami/mongodb/bin/mongo -u ${MONGODB_ROOT_USER} -p ${MONGODB_ROOT_PASSWORD} --host mongodb-primary --tls --tlsCertificateKeyFile=/certificates/mongodb-primary.pem --tlsCAFile=/certificates/mongoCA.crt

注意:我们仅支持–clusterAuthMode=keyFile此配置。

参考

还允许客户端使用用户名和密码进行连接(无需 X509 证书):https://docs.mongodb.com/manual/reference/configuration-options/#net.ssl.allowConnectionsWithoutCertificates

有关相关配置选项的更多详细信息:https://docs.mongodb.com/manual/reference/program/mongod/#tls-ssl-options

配置文件

从宿主机挂载卷到/bitnami/mongodb/conf/,并复制/编辑相关文件到/path/to/mongodb-configuration-persistence/. 如果该目录为空,则默认配置将被填充到该/opt/bitnami/mongodb/conf/目录中。

第 1 步:运行 MongoDB® 映像

运行 MongoDB® 映像,从主机安装目录。

docker run --name mongodb -v /path/to/mongodb-configuration-persistence:/bitnami/mongodb/conf registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest

或使用 Docker Compose:

 ...
 services:
   mongodb:
     ...
     volumes:
       - 'mongodb_data:/bitnami/mongodb'
+      - /path/to/mongodb-configuration-persistence:/bitnami/mongodb/conf
   ...
第 2 步:编辑配置

使用您喜欢的编辑器编辑主机上的配置。

vi /path/to/mongodb-configuration-persistence/mongodb.conf
第 3 步:重新启动 MongoDB®

更改配置后,重新启动 MongoDB® 容器以使更改生效。

docker restart mongodb

或使用 Docker Compose:

docker-compose restart mongodb

有关 MongoDB® 配置选项的完整列表,请参阅配置文件选项手册。

日志

docker logs mongodb

或使用 Docker Compose:

docker-compose logs mongodb

如果您希望以不同方式使用容器日志,您可以使用该选项配置容器日志记录驱动程序。–log-driver在默认配置中,docker 使用json-file驱动程序。

维护

升级此图像

第 1 步:获取更新后的图像
docker pull registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest

或者,如果您使用的是 Docker Compose,请将image属性的值更新为registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest.

第 2 步:停止并备份当前正在运行的容器

使用命令停止当前正在运行的容器

docker stop mongodb

或使用 Docker Compose:

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)

如果升级失败,您可以使用此快照来恢复数据库状态。

第 3 步:删除当前正在运行的容器
docker rm -v mongodb

或使用 Docker Compose:

docker-compose rm -v mongodb
第 4 步:运行新镜像

从新image重新创建容器。

docker run --name mongodb registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mongodb:latest

或使用 Docker Compose:

docker-compose up mongodb
  • 39
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值