Linux Docker 安装 MongoDB

1、MongoDB 搜索,下载,查询

# 搜索镜像
docker search mongo
 
# 下载镜像
docker pull mongo

# 查看镜像
docker images

2、新建 mongo 配置文件夹

mkdir -p /home/20221125/mymongo/db && cd /home/20221125/mymongo/db
mkdir -p /home/20221125/mymongo/{data,logs,conf}

cd /home/20221125/mymongo

chmod 777 data

touch logs/mongod.log

chmod 777 logs/mongod.log

touch conf/mongod.conf

chmod 766 conf/mongod.conf

3、运行容器

docker run \
--restart=always \
-p 27017:27017 \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=123456 \
-v /home/20221125/mymongo/db:/data/db \
-v /etc/localtime:/etc/localtime:ro \
--name first_mongo \
-itd mongo \
--auth

# 参数说明:
-p 27017:27017 :映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务。
-e MONGO_INITDB_ROOT_USERNAME=admin     
-e MONGO_INITDB_ROOT_PASSWORD=123456      
-v 宿主机路径:容器内路径 
-v /home/20221125/mymongo/db:/data/db     挂载本地文件夹,存储数据,将容器的/data/db目录挂载到宿主机的/home/20221125/mymongo/db
-v /etc/localtime:/etc/localtime:ro       同步容器与宿主机的系统时间
--auth                                    是否开启鉴权,如果不开启可以去掉,开启之后,需要密码才能访问容器服务

# 查看容器运行日志
docker logs first_mongo

# 查看容器 hostname、ip地址、环境变量
docker exec first_mongo hostname
docker exec first_mongo ip addr
docker exec first_mongo env

# 查看容器IP地址
docker inspect first_mongo
# "IPAddress": "172.17.0.2"
 
# 查看容器IP地址
docker inspect first_mongo | grep 'IPAddress'

# 进入容器
docker exec -it first_mongo /bin/bash
docker exec -it first_mongo bash
ls -l

4、进入 mongo,进入 mongo,进入  mongo

# 注意:mongodb 5.0 以下的版本使用 mongo
docker exec -it first_mongo mongo admin

# 注意:如果 mongodb 镜像版本比较高,mongodb 5.0 以上版本使用 mongosh
docker exec -it first_mongo mongosh admin
# 参数说明
docker exec -it first_mongo:进入容器
mongosh: mongodb 5.0 以上版本固定参数
admin:   数据库名称

docker exec -it first_mongo mongosh admin -u admin -p 123456
# 参数说明
docker exec -it first_mongo:进入容器
mongosh: mongodb 5.0 以上版本固定参数
admin:   数据库名称
-u:      用户名
-p:      密码

# 验证用户名密码登录
db.auth('admin', '123456')

# 显示数据库
show dbs

# 查看当前所有用户
show users

#查看当前db的链接机器地址
db.getMongo()

#修复当前数据库
db.repairDatabase()
 
#查看当前使用的数据库
db.getName()
 
#显示当前db状态
 db.stats()
 
#当前db版本
db.version()

#删除当前使用数据库
db.dropDatabase()

# 创建数据库的管理员(创建一个 admin 管理员账号)1
db.createUser({ user: "tester", pwd: "123456", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
# 创建数据库的管理员(创建一个 admin 管理员账号)2
db.createUser({ user: "tester", pwd: "123456", roles: [{ role: "root", db: "admin" }] })
# 创建数据库的管理员(创建一个 admin 管理员账号)3
db.createUser({ user: "tester", pwd: "123456", roles: [{ role: "readWrite", db: "admin" }] })

# 查看当前所有用户
show users

# 创建目标数据库(实际上切换即可)use testdb
# 创建目标数据库管理用户                db.createUser({ user: "kingking", pwd: "123456", roles: [ { role: "readWrite", db: "testdb" } ] });
# 开启验证                                      db.auth('kingking', '123456')

# 以刚建立的用户登录数据库

# 以刚创建的test用户登录

# 显示数据库
show dbs

# 切换到数据库
use dbname

# 显示表
show collections

# 查看表数据
db.find.表名

# 创建表
db.createCollection('article')

# 测试插入数据
db.article.insert({ id: 1, title: '测试文章标题' })

5、停止和删除容器

# 关闭该容器
docker stop first_mongo
# 删除该容器
docker rm first_mongo

# 停止和删除容器
docker stop first_mongo && docker rm first_mongo

6、启动方式

# 设置跟随 docker 启动
docker update first_mongo --restart=always

# 设置退出时总是重启
docker update first_mongo --restart=unless-stopped

7、防火墙、开放端口

# 查看防火墙状态
systemctl status firewalld
或
firewall-cmd --state
# 暂时关闭防火墙
systemctl stop firewalld
# 永久关闭防火墙(慎用)
systemctl disable firewalld
# 开启防火墙
systemctl start firewalld
# 开放指定端口
firewall-cmd --zone=public --add-port=8067/tcp --permanent
firewall-cmd --zone=public --add-port=9002/tcp --permanent
# 关闭指定端口
firewall-cmd --zone=public --remove-port=8080/tcp --permanent
# 立即生效
firewall-cmd --reload
# 查看开放的端口
firewall-cmd --zone=public --list-ports

*
*
*

你可能感兴趣的:(Docker,mongodb,docker,数据库)