linux安装mysql/redis/es/kibana/rabbitmq/docker

本文档详细介绍了在Linux环境中安装MySQL、Redis、Elasticsearch (ES)、Kibana、RabbitMQ以及Docker的步骤,包括VM静态IP配置、Docker容器的使用、数据库的安装和配置,以及解决相关问题的方法,如端口占用、防火墙设置和镜像拉取速度慢等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

命令汇总

VM静态ip

VMnet8

2、NET

2、网络连接

宿主机协议

配置ens33

安装mysql

安装redis

Docker安装es

Docker安装Kibana

Docker安装RabbitMQ

分词&安装ik分词

采用xftp安装ik

查看容器内这个ik是否安装成功

es新容器,新分配内存

Docker安装Nginx

1、启动一个nginx实例,只是为了复制出配置

2、将容器内Nginx下的文件复制到当前目录

3、创建新的Nginx,执行以下命令

4、创建es文件,写个TXT

5、进入ik文件夹下config

6、修改xml配置

7、测试

解决问题-------------------------------------

docker拉取镜像慢

未配置阿里云镜像

配置了阿里云镜像

address already in use.

Kibana server is not ready yet.

Cannot Connect to the Elasticsearch cluster.

Cannot connect to the Docker daemon.

防火墙----------------------------------------

1、查询3306端口是否开启

2、在防火墙上,添加需要开放的3306端口

3、重载入添加的端口

4、查询所有的开放端口

查看占用端口

杀死进程

Linux安装MySQL

1、更新yum本地缓存

2、查看系统中是否已安装mysql

3、卸载系统自带的mysql及其依赖(防止冲突)

4、下载wget命令

5、给centos添加rpm源,并且选择比较新的源

6、安装下载好的rpm文件

7、修改mysql-community.repo文件

8、使用yum安装mysql

9、启动mysql服务

10、设置mysql开机启动

11、从mysqld.log文件中,查看mysql临时密码

12、复制上面的临时密码,登录mysql

13、修改密码验证策略(不更改,可能修改的密码通不过),然后更改root用户密码

14、设置数据库用户在所有ip下都可以访问,以下用root用户示例:

15、刷新mysql的系统权限相关表


命令汇总

--name:重命名 -v:目录挂载 -e:environment,环境配置 -d:以后台方式运行 -p:端口映射

ls                              查看当前目录下的所有目录和文件
ls -a                           查看当前目录下的所有目录和文件(==包括隐藏的文件==)
ls -l 或 ll                     列表查看当前目录下的所有目录和文件(==列表查看==,显示更多信息)
​
mv a文件/文件夹 b文件夹            将a文件/文件夹剪切到b文件夹
cp a文件/文件夹 b文件夹            将a文件/文件夹拷贝到b文件夹
​
mkdir a文件夹                    在当前目录下创建一个名为a的文件夹
touch a.txt                     在当前目录创建一个名为a.txt的文件
​
tar -zcvf xxx.tar               解压tar包
z:调用gzip压缩命令进行压缩         c:打包文件         v:显示运行过程            f:指定文件名
​
unzip xxx.zip                   解压zip

startup.bat                       win启动
startup.sh                        Linux启动
netstat -antp|grep 端口号          用来查看进程信息

image-20230308155816544

#    设置docker开机自启动
systemctl enable docker

#    重启docker服务
systemctl restart docker.service

#    设置每次虚拟机重启就自动启动
[root@localhost ~]# docker update mysql --restart=always

[root@localhost ~]# docker update redis --restart=always
#     进入容器的运行时环境
进入mysql:docker exec -it mysql /bin/bash
进入redis:docker exec -it redis redis-cli

VM静态ip

VMnet8

image-20211111112840169

2、NET

网段 192.168.23.0 ~ 192.168.23.255

网段IP:192.168.23.0 网关IP:192.168.23.2 广播IP:192.168.23.255

image-20211111112924694

2、网络连接

VMnet8,右键属性

image-20211111113332315

宿主机协议

image-20211111113730411

配置ens33

image-20211111113928802

[root@localhost /]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
​
IPADDR=192.168.23.128  #静态ip地址
GATEWAY=192.168.23.2   #默认网关
DNS1=192.168.23.2
NETMASK=255.255.255.0  #子网掩码

image-20211111114420872

安装mysql

1、去hub.docker.com查看版本,然后:加上版本,否则会下载最新版本
​
2、docker pull mysql:5.7
​
3、启动容器并设置相关参数
sudo docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
​
    参数说明
    -p 3306:3306:将容器的3306端口映射到主机的3306端口
​
    -v /mydata/mysql/log:/var/log/mysgl:将日志文件夹挂载到主机【不用进入到容器内部就能查看日志】
    -v /mydata/mysql/data:/var/ib/mysql/:将配置文件夹挂载到主机【相当于快捷方式】
    -v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机【linux文件与容器内部的文件挂载】
    -e MYSQL_ROOT_PASSWORD=root: 初始化root用户的密码
    -d 后台启动
​
解决:远程无法连接mysql:密码没有修改
    1)docker exec -it mysql /bin/bash进入mysql
    2)连入mysql:mysql -uroot -proot
    3)查询:select host,user,plugin,authentication_string from mysql.user;
        找到user为root的两列,
            %:表示不限制ip的配置
            localhost:表示本地连接的配置
            plugin数据非mysql_native_password表示要修改密码
        执行以下语句:
        ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
​
解决:远程无法连接mysql:修改root用户远程访问权限
    “password”填写密码 root
grant all privileges on *.* to root@"%" identified by "password" with grant option;
​
查看linux的 mydata/mysql/conf/my.cnf配置文件
[client]
default-character-set=utf8
​
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
​
4、重启:docker restart mysql
​
5、虚拟机开机自动启动mysql容器
docker update mysql --restart=always

安装redis

1、去hub.docker.com查看版本,然后:加上版本,否则会下载最新版本
​
2、docker pull redis         【拉取最新镜像】
​
3、新建redis配置 文件夹:
    mkdir -p /mydata/redis/conf
​
4、新建redis配置 文件:
    touch /mydata/redis/conf/redis.conf
    
5、开启持久化
vim /mydata/redis/conf/redis.conf
添加:appendonly yes
​
6、驱动容器,并挂载相关配置、端口
docker run -p 6379:6379 --name redis \
-v/mydata/redis/data:/data \
-v/mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
​
终止容器:docker stop redis
删除容器:docker rm redis
​
7、连接:
    方式1:进入容器运行时环境连接
    docker exec -it redis /bin/bash
    redis-cli -p 6379
    方式2:默认连接name是redis的容器,默认找6379端口
    docker exec -it redis redis-cli 
    方式3:windows可视化客户端直接连接6379端口
    
8、自动启动redis:  docker update redis --restart=always

Docker安装es

# 查看可用内存,这里还有387
​
[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1819        1223         114          25         482         387
Swap:          2047         176        1871
1、下载镜像文件
docker pull elasticsearch:7.4.2                 存储和检索数据
​
2、创建目录,作为挂载目录
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
​
3、配置
将"http.host: 0.0.0.0"写入配置文件elasticsearch.yml:允许任何ip访问es【有一个空格】
​
echo "http.host: 0.0.0.0">> /mydata/elasticsearch/config/elasticsearch.yml
执行完上面这个,记得重启一下
docker restart 容器id
​
​
4、启动
    1)容器名字,暴露两个端口。9200:HTTP请求,9300:分布式集群下各节点通信端口
    2)单节点运行
    3)指定内存,默认占用所有
    4)挂载 -v,可以直接在容器外部修改配置,装插件
    5)-d使用镜像: elasticsearch:7.4.2
    
docker run --name elasticsearch -p 9200:9200 -p9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
​
elasticsearch自动关闭,通过查看日志去解决
docker logs elasticsearch                         查看日志【data文件夹权限不够】
​
5、修改其他用户权限也是 rwx
解决:chmod -R 777 /mydata/elasticsearch/          【-R递归修改任何组任何角色都是rwx】
​
6、启动或者重新启动
docker start elasticsearch
docker restart elasticsearch
​
7、自动启动
docker update elasticsearch --restart=always

image-20211126234507527

image-20211126234612885

image-20211126235040098

访问9200端口

image-20211126235250565

使用postman进行测试:

http://192.168.85.129:9200/_cat/nodes

<think>嗯,用户现在想用虚拟机来部署项目,已经用Docker安装MySQLRedis、JDK17、RabbitMQ、Nacos和MinIO。我需要帮他理清思路,看看有什么需要注意的地方。 首先,用户可能已经完成了基础环境的搭建,但可能还不太确定接下来该怎么做。可能需要检查各个组件的配置是否正确,比如MySQL的数据持久化,Redis的持久化设置,这些在Docker里如果不挂载卷的话,数据可能会丢失。 然后,网络配置也是个问题。Docker容器之间的通信需要确保它们在同一个网络里,这样服务才能互相访问。比如Nacos作为配置中心和服务发现,其他服务需要能连接到它,可能需要配置正确的IP和端口。 还有资源分配的问题,虚拟机本身的资源是否足够?比如内存、CPU,特别是同时运行这么多服务,如果分配不足,可能会导致性能问题。需要建议用户根据每个容器的需求调整资源限制。 接下来是安全性,比如MySQLRedis的默认密码是否更改,MinIO的访问密钥是否设置,这些安全措施不能忽视。另外,端口暴露的问题,是否需要通过防火墙或者安全组限制外网访问,避免被攻击。 服务启动顺序也可能有影响,比如Nacos应该在依赖它的服务之前启动,RabbitMQ需要先运行,其他服务才能连接。可能需要使用docker-compose来管理启动顺序,或者编写脚本控制。 还有日志管理,每个容器的日志如果不做收集和监控,出问题时排查会比较困难。建议用户配置统一的日志目录,或者使用ELK等工具集中管理。 备份和恢复策略,用户可能没考虑到数据的定期备份,特别是MySQL和MinIO里的数据,需要计划好备份方案,防止数据丢失。 高可用和扩展性方面,如果项目需要高可用,可能需要部署多个实例,比如Redis哨兵或者集群,MySQL主从复制,Nacos集群模式等。不过这可能对资源要求更高,用户是否已经考虑到这一点? 最后,监控和运维工具,比如Prometheus和Grafana,可以帮助用户监控各个服务的状态,及时发现问题。用户可能没有提到这方面,但这是生产环境中很重要的一环。 总结下来,用户的需求可能不仅仅是部署,还包括确保稳定性、安全性和可维护性。需要从配置、网络、资源、安全、启动顺序、日志、备份、高可用和监控等方面给出建议,帮助用户完善部署方案。</think>您的项目基于Docker部署了多个核心组件,这是一个高效且可扩展的方案。以下是关键点梳理和优化建议: --- ### **1. 组件功能说明** - **MySQL**:关系型数据库,建议确认数据持久化卷配置(`/var/lib/mysql`)。 - **Redis**:缓存/消息队列,检查是否启用RDB/AOF持久化。 - **JDK17**:Java应用运行环境,注意容器内JVM内存参数调优。 - **RabbitMQ**:消息中间件,建议启用管理插件(`rabbitmq:management`镜像)。 - **Nacos**:服务注册与配置中心,推荐集群部署保障高可用。 - **MinIO**:对象存储,确保存储卷挂载(`/data`目录)。 --- ### **2. Docker部署建议** #### **网络配置** - 创建自定义网络实现容器互通: ```bash docker network create my-app-net ``` - 容器启动时通过 `--network my-app-net` 加入同一网络。 #### **容器化示例** ```bash # MySQL(持久化 + 自定义配置) docker run -d --name mysql \ -v ./mysql/data:/var/lib/mysql \ -v ./mysql/conf:/etc/mysql/conf.d \ -e MYSQL_ROOT_PASSWORD=your_password \ --network my-app-net \ mysql:8.0 # Redis(持久化启用) docker run -d --name redis \ -v ./redis/data:/data \ --network my-app-net \ redis:alpine redis-server --appendonly yes # Nacos(单机模式示例) docker run -d --name nacos \ -e MODE=standalone \ -p 8848:8848 \ --network my-app-net \ nacos/nacos-server ``` --- ### **3. 关键优化方向** #### **安全性** - 修改MySQLRedisRabbitMQ默认密码。 - MinIO设置 `MINIO_ROOT_USER` 和 `MINIO_ROOT_PASSWORD`。 - 限制敏感服务的外网暴露(如MySQL仅允许内网访问)。 #### **数据管理** - 所有数据库/存储服务必须挂载**持久化卷**。 - 定期备份MySQLmysqldump)和MinIO数据(mc工具)。 #### **性能调优** - 为Java容器设置JVM内存参数(如 `-Xmx4g`)。 - 调整RabbitMQ连接数和通道限制。 - 监控资源使用(通过 `docker stats` 或Prometheus)。 --- ### **4. 编排与监控** - **使用docker-compose**:统一管理服务依赖和启动顺序。 ```yaml version: '3' services: mysql: image: mysql:8.0 volumes: - "./mysql/data:/var/lib/mysql" networks: - my-app-net # 其他服务类似定义... networks: my-app-net: driver: bridge ``` - **监控方案**:部署Prometheus + Grafana监控容器状态,或使用 `cAdvisor` 实时查看资源占用。 --- ### **5. 故障排查命令** ```bash # 查看容器日志 docker logs -f [container_name] # 进入容器内部调试 docker exec -it [container_name] /bin/bash # 检查容器网络连通性 docker run --rm --network my-app-net busybox ping mysql ``` --- ### **6. 扩展建议** - **Kubernetes迁移**:若需弹性伸缩,可考虑将Docker迁移至K8s集群。 - **CI/CD集成**:结合GitLab CI/Jenkins实现自动化构建部署。 - **日志集中化**:使用ELK(Elasticsearch+Logstash+Kibana)管理日志。 通过以上优化,您的Docker化部署将更健壮、易维护。实际配置需根据业务负载和硬件资源进一步调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值