Docker安装常用中间件服务

Docker安装常用中间件服务

MySQL

下载MySQL镜像

docker pull mysql 

创建文件目录

mkdir -p /home/docker/mysql/{conf,log,data} 

创建MySQL配置文件

cd /home/docker/mysql/conf 
touch my.cnf 

启动MySQL容器实例

docker run -p 3306:3306 --name mysql \
-v /home/docker/mysql/conf:/etc/mysql/conf.d \
-v /home/docker/mysql/log:/var/log/mysql \
-v /home/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=Hard-1234 \
-e TZ=Asia/Shanghai \
--restart=always \
-d mysql:latest

mysql远程连接(需要进入docker本地客户端设置远程访问账号)

docker exec -it mysql bash 
mysql -uroot -pHard-1234

修改密码

use mysql;
update user set authentication_string=password('新密码') where user='root' and Host='localhost';
flush privileges;

update user set host='%' where user='root';
flush privileges;
# 或者
ALTER USER 'root'@'%' IDENTIFIED BY 'Hard-1368' WITH GRANT OPTION;
flush privileges;
# 或者
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Hard-1368';
flush privileges

MySQL配置

# 去除group by 语句限制
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTIO

注:MySQL(5.7.19)的默认配置文件是 /etc/mysql/my.cnf 文件。如果想要自定义配置,建议向 /etc/mysql/conf.d 目录中 创建 .cnf 文件。新建的文件可以任意起名,只要保证后缀名是 cnf 即可。新建的文件中的配置项可以覆盖 /etc/mysql/my.cnf 中的配置项。 具体操作: 注意!注意!注意!首先需要创建将要映射到容器中的目录以及.cnf文件,然后再创建容器 建立目录映射

命令说明:

  • -p 3306:3306:将主机的3306端口映射到docker容器的3306端口
  • --name mysql5.7:运行的容器的名字
  • -v mysql.conf:/etc/mysql:将MySQL容器的/etc/mysql配置文件目录映射到宿主机的数据卷mysql.conf,同步配置文件
  • -v mysql.log:/var/log/mysql:将MySQL容器的/var/log/mysql日志文件目录映射到宿主机的数据卷mysql.log,同步日志文件
  • -v mysql.data:/var/lib/mysql:将MySQL容器的/var/lib/mysql数据文件目录映射到宿主机的数据卷mysql.data,同步数据库数据
  • -e MYSQL_ROOT_PASSWORD=root:配置环境变量,初始化root用户的密码。必须指定,否则无法启动容器
  • -e TZ="Asia/Shanghai":配置环境变量,指定容器时区,不指定的话MySQL的时间函数执行结果会不正确
  • -d mysql:5.7 : 后台程序运行MySQL

然后查看宿主机对应的MySQL配置文件数据卷的具体路径

docker volume inspect mysql.conf

添加如下编码相关配置,将编码统一为UTF-8

[mysql]
default-character-set=utf8

[client]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection=utf8_general_ci'
init_connect='SET NAMES utf8'
character_set_server=utf8
collation_server=utf8_general_ci

Redis5

下载redis镜像

docker pull redis:5

因为启动Redis容器和其他容器有点区别,Redis启动时是没有默认配置文件的,我们需要在启动时设置一条额外的启动命令,让Redis加载指定的配置文件启动,所以我们要提前在宿主机创建好这个配置文件并映射到容器中。首先在宿主机创建redis配置文件对应的数据卷,然后创建1个空的redis配置文件

创建目录

mkdir -p /home/docker/redis/{conf,data} 

创建空的配置文件

touch /home/docker/redis/conf/redis.conf

在配置文件中添加常用的配置

vim /home/docker/redis/conf/redis.conf
# 端口
port 6379
# RDB相关配置
save 900 1
save 300 10
save 60 10000
rdbcompression yes
# 数据目录
dir /data
# AOF相关配置
appendonly yes
appendfsync everysec
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# 密码
requirepass baobao

创建容器实例并启动

docker run -p 6379:6379 -d --name redis5 \
-v /home/docker/redis/data:/data \       # 映射容器的redis数据目录到宿主机的数据卷             
-v /home/docker/redis/conf:/etc/redis \ # 映射容器的redis配置目录到宿主机的数据卷
-e TZ="Asia/Shanghai" \  # 指定容器时区
redis:5 redis-server /etc/redis/redis.conf  # 设置启动时的额外命令,加载容器的/etc/redis/redis.conf配置启动

注意:这里在启动容器时需要添加额外的启动命令redis-server /etc/redis/redis.conf以我们指定的配置文件启动

设置docker启动时自动启动redis

docker update redis5 --restart=always

RabbitMQ

相关文献 https://www.cnblogs.com/yy-cola/p/11089800.html https://blog.csdn.net/ClassmateLin/article/details/104559569

拉取RabbitMQ镜像

docker pull rabbitmq:management

在home目录下创建需要映射的目录:

mkdir -p /home/docker/rabbitmq/{lib,log}

创建并启动实例

# 运行容器 映射端口 持久化路径 配置用户名密码
docker run -it --name iot-rabbitmq \
-e RABBITMQ_DEFAULT_USER=admin  \
-e RABBITMQ_DEFAULT_PASS=admin \
-p 15672:15672 -p 5672:5672  \
-v /home/docker/rabbitmq/lib:/var/lib/rabbitmq \
-v /home/docker/rabbitmq/log:/var/log/rabbitmq  \
--restart=always \
-d rabbitmq:management

注:在最新版本中,不在支持密码和用户设置,以及log没有权限映射出

docker run -it --name iot-rabbitmq \
-p 15672:15672 -p 5672:5672 -p 25672:25672  \
-v /home/docker/rabbitmq/lib:/var/lib/rabbitmq \
--restart=always \
-d rabbitmq:management

运行容器,注意要配置3个端口映射:

  • 5672:与rabbitmq通信的端口号,建立连接、发送消息等都是用这个端口
  • 15672:访问rabbitmq控制台图形界面的端口
  • 25672:rabbitmq集群通信的端口号

rabbitmq 后台配置

# 配置控制台
docker exec -it iot-rabbitmq bash
rabbitmq-plugins enable rabbitmq_management
rabbitmqctl  add_user  admin  admin
rabbitmqctl  set_user_tags admin administrator
rabbitmqctl  set_permissions -p / admin '.*' '.*' '.*'

ElasticSearch7

首先下载ES和kibana的镜像,kibana可以看做是可视化操作ES的工具

docker pull elasticsearch:7.8.0
docker pull kibana:7.8.0

在运行ES之前,要先看一下宿主机内存够不够,ES比较占用内存,默认最大占用内存1G,建议剩余1.5G以上内存

free -h

创建目录

mkdir -p /home/docker/elasticsearch/{conf,data,plugins}

创建并运行ES容器

docker run -d --name elasticsearch7.8 -p 9200:9200 -p 9300:9300 \  # 指定端口,9200是访问端口,9300是节点通信端口
-e "discovery.type=single-node" \   # 单节点模式
-e TZ="Asia/Shanghai"  # 指定时区
-v /home/docker/elasticsearch/conf:/usr/share/elasticsearch/config \ # 映射配置目录
-v /home/docker/elasticsearch/data:/usr/share/elasticsearch/data \ # 映射数据目录
-v /home/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ # 映射插件目录
elasticsearch:7.8.0

其中容器内相关的目录介绍如下:

  • /usr/share/elasticsearch/config:ES配置文件目录
  • /usr/share/elasticsearch/data:ES数据目录
  • /usr/share/elasticsearch/plugins:ES插件目录

运行容器成功后,可以在浏览器测试访问

http://192.168.153.190:9200

创建映射目录–kibana

mkdir -p /home/docker/kibana/{conf,data}

然后我们再创建并运行kibana容器

docker run -d --name kibana7.8 \
-e TZ="Asia/Shanghai" -p 5601:5601 \
-v kibana.conf:/usr/share/kibana/config kibana:7.8.0

这里/usr/share/kibana/config是kibana的配置文件目录

启动后修改kibana的配置文件,指定要连接的ES的地址

cd /var/lib/docker/volumes/kibana.conf/_data
vim kibana.yml
elasticsearch.hosts:["http://192.168.153.190:9200"]

然后重启kibana容器

docker restart kibana7.8

测试kibana

http://192.168.153.190:5601

Nginx

首先拉取镜像

docker pull nginx

创建映射目录

mkdir -p /home/docker/nginx/{conf,log,html}

启动nginx容器

docker run -d --name nginx \
-p 80:80 -p 443:443 
-e TZ="Asia/Shanghai" \
-v /home/docker/nginx/conf:/etc/nginx \
-v /home/docker/nginx/html:/usr/share/nginx/html \
-v /home/docker/nginx/log:/var/log/nginx nginx:latest

其中映射的目录介绍如下:

  • /etc/nginx:nginx配置文件目录
  • /usr/share/nginx/html:nginx静态资源文件目录
  • /var/log/nginx:nginx日志文件目录

docker会自动在宿主机上创建数据卷nginx.confnginx.htmlnginx.log,并将容器中对应映射目录原有的所有文件拷贝到数据卷中

最后访问宿主机ip+80端口即可看到nginx欢迎页面

MongoDB

首先拉取镜像

docker pull Mongo

创建映射目录

mkdir -p /home/docker/mongodb/db

启动MongoDB容器

docker run -itd --name mongodb \
-v /home/docker/mongodb/db:/data/db \
-p 27017:27017 --restart=always \
-d mongo:latest --auth

配置

# --auth表示连接mongodb需要授权
# 进入MongoDB控制台
docker exec -it mongodb mongo admin
# 创建一个名为admin,密码为123456的用户。
db.createUser({user:'angel',pwd:'Angel#1368',roles:[{role:'userAdminAnyDatabase',db:'admin'},"readWriteAnyDatabase"]});
# 尝试使用上面创建的用户信息进行连接。
db.auth('angel','Angel#1368')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值