1、打开cmd,拉取镜像
由于最新版的mongo镜像太大,所以我们去docker hub 找一个相对较小的版本
docker pull mongo:bionic
2、运行容器,并设置固定IP,如果物理主机安装了mongoDB,请先在服务中停止mongo服务,否则会报端口冲突的错误(因为mongo服务的默认端口是27017,或者直接更换映射端口)
停掉物理主机的mongo服务之后执行
# windows容器
docker run -itd --name mongo --network mynet --ip 172.18.108.54 -p 27017:27017 mongo:bionic --auth
# linux容器(不需要指定ip)
docker run -itd --name mongo -p 27017:27017 mongo:bionic --auth
语法说明
docker run -itd --name [容器名称] -network [自定义网络模式] --ip [指定的固定IP地址] -p [宿主机端口]:[容器端口] [镜像名称:tag] --auth
# 或者
docker run -itd --name [容器名称] -network [自定义网络模式] --ip [指定的固定IP地址] -p [宿主机端口]:[容器端口] [镜像id] --auth
-network [自定义网络模式] --ip [指定的固定IP地址]
:设置容器固定ip--auth
:指登录mongo需要账户验证
3、连接数据库
docker exec -it mongo mongo admin
语法说明
docker exec -it [容器名称] [镜像名称/id] [数据库] # 默认admin
4、创建用户,给userAdminAnyDatabase
角色创建admin
用户
db.createUser({ user:'admin',pwd:'temp@pass',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]});
然后登陆
db.auth('admin','temp@pass');
5、远程客户端连接
(1)打开cmd,查看容器ip
docker inspect mongo
语法说明
docker inspect [容器名称/id]
- "NetworkSettings"对象下的"Networks"对象下的"IPAddress"属性就是容器的ip
注意:"Gateway"的IP是虚拟机的ip
(2)物理主机客户端连接,我用的是Robo 3T
需要注意的是,登录windows容器,需要使用容器的ip,登录linux容器,使用宿主机的ip,因为linux容器的默认网络是bridge
连接成功
补充
由于忘了将容器设置为自动重启(开机自启)了,所以在这update容器
docker update --restart=always mongo
语法说明
docker update --restart=always [容器名称/id]