这几天在学docker,遇到一些问题,故在此记录(真的不是想打广告)。
在power shell中使用docker pull mongo命令下载mongo镜像:
当时下下来的mongo镜像有11G,正常的话应该是三百多M。
不知道为什么,用的是正确的命令,在网上找也没有答案。镜像地址配置的国内源(虽然有同学反映官方源其实也很快,不过当时网速比较慢,没办法):
教程中配置的也是这个地址,只是他这边是mac版的docker desktop:
下载完之后,使用docker run --name mongo -p 27017:27017 -v mongodata:/data/db -d mongo启动mongo,遇到各种报错(这里就不分别说了。主要是文件挂载问题,可以参考这篇文章:http://www.moguf.com/post/windockerrunmongo,另外再提一句,如果用的是Windows Container,虚拟磁盘在C:\ProgramData\Docker\volumes在,C:\ProgramData\Docker下的文件夹和文件不要轻易删除,否则会无法启动容器),然后又删除镜像,又下载了一次,还是11G,启动mongo后,输入命令docker exec -it mongo bash进入mongo终端,发现无法连接,Auth failed:
后面我想到我这边Container是Windows Container(右键鲸鱼图标):
于是想会不会可能跟这个有关(也可以切换到Liunx Container),当时一狠心,卸载了docker再次安装,安装完毕后:
默认是Liunx Container。对的,就是这里有个坑,使用Linux Container:
Resource是容器的配置,建议不要修改:
File Sharing,选择一个磁盘绑定到docker容器:
想到之前的docker镜像不对,未找到原因,在网上找了下,有人说指定版本,docker pull mongo:3.2,我就下了3.2的:
跑起来之后,输入命令mongo进入mongo终端:
切换admin库:
新建管理员用户。因为mongo默认是没有开启auth验证的,也没有用户,需要建一个用户:
对用户授权,1 代表授权验证成功:
使用命令mongo -u "username" -p "password" --authenticationDatabase "db",指定用户名和密码登录到某个数据库:
可能会默认连接到test,然后使用use dbname,切换到指定库:
过几天我又重新使用docker pull mongo,又正常了,不知道什么原因。浪费我2天时间,我真是气死了: