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
版权归原作者 轻云UC 所有, 如有侵权,请联系我们删除。