Docker笔记:Docker中简单配置Mysql/Redis/Mongodb容器
2023-12-15 11:33:37
Docker 配置 Mysql 容器
1 )方案1:基于centos等linux操作系统
- 启动centos镜像,在里面安装 mysql
- 这样比较麻烦,配置的东西很多 …
2 )方案2:直接用 mysql 镜像 (推荐)
- $
docker pull mysql
下载镜像 - $
docker run -itd --name my_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-pass-xxx-xx mysql
- $
docker ps
找到容器id - $
docker exec -it 容器id /bin/bash
这样来连接上mysql, 这里容器id- $
mysql -u root -p
- $
- 之后使用客户端来连接上容器的mysql服务
- 使用 服务器物理机 ip和端口
- 测试,连接成功
- 实现mysql的数据存放到本地
- 配置文件 存放到物理机 /root/mysql/conf.d
- 数据文件 存放到物理机 /root/mysql/data
- 停止之前的容器,重新配置启动:
- $
docker run -itd --name my_mysql2 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /root/mysql/conf.d:/etc/mysql/conf.d -v /root/mysql/data:/var/lib/mysql mysql$
- $
- 可以测试物理机和容器内的数据同步情况,测试正常
Docker 配置 Redis 容器
- $
docker pull redis
下载redis镜像 - $
docker run -itd --name redis-test -p 6379:6379 redis
启动redis容器 - $
docker ps
查看当前redis - $
docker exec -it 容器id /bin/bash
- $
redis-cli
可以连接上 redis
- $
- ip addr 拿到到物理机的ip之后,在客户端连接redis
- $
redis-cli -h xxx.xxx.xxx.xxx -p 6379
- 连接成功
- $
- 安全问题,需要授权
- 启动时需配置密码
- $
docker run -itd --name redis2 6378:6379 redis --requirepass "123456"
- 连接 $
redis-cli
- 直接set测试 $
set u wang
, 提示 NOAUTH Authentication required.- $
auth 123456
- $
- 这样就可以set了
- 连接 $
- 客户端能正常连接了
Docker 配置 Mongodb 容器
-
$
docker pull mongo
-
$
docker run -itd --name mymongo -p 27017:27017 -v /root/mongo/data:/data/db mongo
-
$
docker ps 获取 mymongo 容器id
-
$
docker exec -it mymongo /bin/bash
- $
mongo
链接 mongo 数据库 - $
show dbs
查看现有数据库 - $
use myowndb
创建自己的数据库 - $
db.user.insert({username:'wang'})
这样,在 myowndb 数据库中创建了user表,并插入了一条数据 - $
show collections
看到目前的 user 集合(表) - $
show dbs
可看到多了 myowndb 的数据库 - $
db.user.find({})
查看 user 表中所有数据
- $
-
在物理机上 $
ip addr
获取ip地址 -
在客户端上 连接 $
mongo xxx.xxx.xxx.xx:27017
- $
show dbs
- $
show collections
- 正常连接
- $
-
测试数据持久化
- $
docker inspect 容器id | grep mongo
查看对应映射关系 - 销毁之前容器,创建新容器
- 测试正常,数据都在
- $
-
mongo密码问题
docker run -d --name authMongo \ -e MONGO_INITDB_ROOT_USERNAME=admin \ -e MONGO_INITDB_ROOT_PASSWORD=123456 \ -p 27017:27017 -v /root/mongo/data:/data/db \ mongo --auth
-
两个变量
MONGO_INITDB_ROOT_USERNAME
和MONGO_INITDB_ROOT_PASSWORD
结合起来使用来传递环境变量,配置账户密码 -
创建账户,进行授权
db.createUser({ user: 'wang', pwd: '123456', roles: [ { role: 'userAdminAnyDatabase', db: 'admin' }, "readWriteAnyDatabase" ], })
-
创建一个新用户并设置该用户的密码
-
该用户是在 admin 身份验证数据库中创建的,并被赋予角色, 这是一个"超级用户"角色
-
$
docker exec -it authMongo /bin/bash
- $
mongo$
- $
show dbs$
发现看不到数据了 - $
db.auth('wang', '123456')$
发现没法授权
- $
-
开始正确鉴权连接
- $
mongo admin
连接admin数据库 - $
db.auth('wang', '123456')
- $
show dbs
这样就能看到了,说明鉴权成功了
- $
-
在客户端连接docker容器的mongo服务
- $
mongo xxx.xxx.xxx.xxx:27017/admin$
- admin 是数据库,可以指定任意数据库
- $
db.auth('wang', '123456')
这里是账户和密码 - $
show dbs
发现有数据,正常连接
- $
文章来源:https://blog.csdn.net/Tyro_java/article/details/134937552
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!