Docker - 设置 MongoDB
Docker - 设置 MongoDB
Section titled “Docker - 设置 MongoDB”MongoDB 是一种流行的 NoSQL 文档型数据库,常用于现代 Web 应用中。Docker 使运行 MongoDB 实例进行开发、测试甚至生产变得容易。
本指南将展示如何运行一个 MongoDB 服务器容器,并使用 Docker 的网络功能从另一个容器连接到它。
运行 MongoDB 服务器容器
Section titled “运行 MongoDB 服务器容器”步骤 1:从 Docker Hub 拉取官方的 MongoDB 镜像。
# Pull the latest official MongoDB imagedocker pull mongo步骤 2:创建一个用户自定义网络。这允许容器使用它们的名称轻松通信。
docker network create mongo-net步骤 3:运行 MongoDB 服务器容器,将其连接到网络并设置必要的环境变量。
docker run -d \ --name mongodb-server \ --network mongo-net \ -e MONGO_INITDB_ROOT_USERNAME=mongoadmin \ -e MONGO_INITDB_ROOT_PASSWORD=secret \ mongo解释:
-d:以后台(分离)模式运行。--name mongodb-server:为容器指定一个名称。--network mongo-net:将容器连接到我们的用户自定义网络。-e MONGO_INITDB_ROOT_USERNAME=...:在首次初始化时设置 root 用户名。-e MONGO_INITDB_ROOT_PASSWORD=...:在首次初始化时设置 root 密码。在实际场景中请使用强密码!mongo:要使用的镜像名称。
可选:为了数据持久化(强烈推荐),挂载一个卷 (volume):
# Create a named volume first (optional, Docker creates it if it doesn't exist)# docker volume create mongo-data
docker run -d \ --name mongodb-server \ --network mongo-net \ -v mongo-data:/data/db \ -e MONGO_INITDB_ROOT_USERNAME=mongoadmin \ -e MONGO_INITDB_ROOT_PASSWORD=secret \ mongo-v mongo-data:/data/db 将名为 mongo-data 的卷映射到容器内默认的 MongoDB 数据目录,确保您的数据在容器重启或移除后仍然存在。
连接 MongoDB 客户端容器
Section titled “连接 MongoDB 客户端容器”步骤 4:使用相同的 mongo 镜像运行另一个容器作为客户端。将其连接到同一个网络。
# Run a temporary interactive mongo container connected to the networkdocker run -it --rm --network mongo-net mongo bash-it:以交互模式运行并分配 TTY。--rm:容器退出时自动移除。--network mongo-net:连接到与服务器相同的网络。mongo:使用 mongo 镜像。bash:在客户端容器内部启动一个 bash shell。
步骤 5:在客户端容器的 bash shell 中,使用 mongosh(或旧版 mongo)客户端连接到服务器,通过服务器容器的名称(mongodb-server)进行引用。
# Inside the client container's shell:mongosh --host mongodb-server --username mongoadmin --password secret解释:
mongosh:MongoDB shell 命令。--host mongodb-server:使用容器名称连接到服务器(Docker 会通过用户自定义网络解析此名称)。--username mongoadmin:使用之前定义的 root 用户名。--password secret:使用之前定义的 root 密码。(如果省略--password secret,可能会交互式地提示您输入密码)。
如果连接成功,您将看到 MongoDB shell 提示符(>)。
步骤 6:现在可以运行 MongoDB 命令了。
# Example commands inside the MongoDB shell:show dbsuse myNewDatabasedb.myCollection.insertOne({ name: "Docker Test" })db.myCollection.find()输入 exit 退出 MongoDB shell,再次输入 exit 退出客户端容器(该容器会因 --rm 选项而被移除)。您的 mongodb-server 容器会继续在后台运行。