docker之服务搭建

网友投稿 223 2022-10-19

docker之服务搭建

使用docker搭建相关服务:

1. MySQL服务

1) 拉取镜像

docker pull mysql:5.7 # 拉取 mysql 5.7docker pull mysql # 拉取最新版mysql镜像# 不指定版本,默认拉取最新的

2)启动服务

sudo docker run -p 3306:3306 --name mysql \-v /usr/local/docker/mysql/conf:/etc/mysql \-v /usr/local/docker/mysql/logs:/var/log/mysql \-v /usr/local/docker/mysql/data:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=123456 \-d mysql:5.7–name:容器名,此处命名为mysql-e:配置信息,此处配置mysql的root用户的登陆密码-p:端口映射,此处映射 主机3306端口 到 容器的3306端口-v: 挂载数据卷, 宿主目录: 容器目录-d:源镜像名,此处为 mysql:5.7

3) 如果你的容器运行正常,但是无法访问到MySQL,一般有以下几个可能的原因:

a) 防火墙

# 开放端口:$ systemctl status firewalld$ firewall-cmd --zone=public --add-port=3306/tcp -permanent$ firewall-cmd --reload# 关闭防火墙:$ sudo systemctl stop firewalld

b)需要进入docker本地客户端设置远程访问账号

$ sudo docker exec -it mysql bash$ mysql -uroot -p123456mysql> grant all privileges on *.* to root@'%' identified by "password";

# mysql使用mysql数据库中的user表来管理权限,修改user表就可以修改权限(只有root账号可以修改)mysql> use mysql;Database changedmysql> select host,user,password from user;+--------------+------+-------------------------------------------+| host | user | password |+--------------+------+-------------------------------------------+| localhost | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E || 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |+--------------+------+-------------------------------------------+2 rows in set (0.00 sec)mysql> grant all privileges on *.* to root@'%' identified by "password";Query OK, 0 rows affected (0.00 sec)mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)mysql> select host,user,password from user;+--------------+------+-------------------------------------------+| host | user | password |+--------------+------+-------------------------------------------+| localhost | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E || 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E || % | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |+--------------+------+-------------------------------------------+3 rows in set (0.00 sec)

2.mongo服务

1)拉取镜像

docket pull mongo:latest

2)运行容器

docker run -it --name mongo-server -v /data/docker_data/mongoDB:/data/db -p 27018:27017 -d mongo:latest --auth--name 容器名称-v 数据挂载-p 端口映射-d 守护进程--auth 需要验证

3)创建用户

# 进入容器docker exec -it mongo-server /bin/bash# 进入mongomongo# 创建管理员use admindb.createUser({user:"admin",pwd:"admin",roles:[{role:"root",db:"admin"}]});# 退出当前用户exit# 使用新创建的管理员账号进行登录mongo --port 27017 -u admin -p admin --authenticationDatabase admin# 创建普通用户> use testswitched to db test> db.createUser({user:"tester",pwd:"tester",roles:[{role:"readWrite",db:"test"}]});# 退出exit

4)在容器外进行连接

# 如果Linux不存在mongo客户端,可以使用yum 进行安装yum install -y mongodb // clientyum install -y mongodb-server // servermongo --port 27018 -u tester -p tester --authenticationDatabase test

mongo中的角色与权限说明:

数据库用户角色 read、readWrite数据库管理角色 dbAdmin、dbOwner、userAdmin集群管理角色 clusterAdmin、clusterManager、clusterMonitor、 hostManager备份恢复角色 backup、restore所有数据库角色 readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase超级用户角色 root内部角色 __system角色说明Read 允许用户读取指定数据库readWrite 允许用户读写指定数据库dbAdmin 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profileuserAdmin 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户clusterAdmin 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。readAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读权限readWriteAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读写权限userAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限dbAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。root 只在admin数据库中可用。超级账号,超级权限

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Springboot中静态文件的两种引入方式总结
下一篇:基于Docker搭建PHP开发环境
相关文章

 发表评论

暂时没有评论,来抢沙发吧~