docker安装中间件
docker安装
centorOS安装docker
1. 删除
yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
2. 安装docker的yum库
yum install -y yum-utils
3. 配置docker的yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4. 安装docker
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
5. 查看docker版本
docker -v
6. 开机自启
systemctl enable docker
systemctl start docker
7. 配置镜像
# 创建目录
mkdir -p /etc/docker# 进入上面那个目录后再依次执行下面的命令
# 复制内容,注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.fxxk.dedyn.io","https://dockerproxy.com","https://hub-mirror.c.163.com","https://mirror.baidubce.com","https://ccr.ccs.tencentyun.com"]
}
EOF# 重新加载配置
systemctl daemon-reload# 重启Docker
systemctl restart docker
1. 安装Nginx
nginx documentation
1. 拉取镜像
docker pull nginx:1.19.4
2. 运行简单 nginx
容器
docker run -d -p 80:80 --name nginx nginx:1.19.4
3. 创建Nginx挂载目录
mkdir -p /docker/nginx
4. 复制 Nginx 配置文件至宿主机
# 复制名称为 nginx 容器中 /etc/nginx/nginx.conf 文件夹到宿主机的 /docker/nginx 路径下
docker cp nginx:/etc/nginx/nginx.conf /docker/nginx
# 复制名称为 nginx 容器中 /etc/nginx/conf.d 文件到宿主机的 /docker/nginx 路径下
docker cp nginx:/etc/nginx/conf.d /docker/nginx
5. 修改 Nginx的配置文件,添加反向代理
cd /docker/nginx/conf.d
6. 编辑配置文件
vim default.conf
在 location
节点中,添加反向代理配置如下:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 反向代理到后台 Web 服务
proxy_pass http://172.17.0.1:8080;
前面 3 行配置都是设置一些请求头,主要是最后一行,这一行配置指定了反向代理的目标地址。它使用 proxy_pass
指令将过来的请求转发给后端服务器,这里的目标地址是 http://127.0.0.1:8080
:
7. 删除之前启动的nginx,并重新启动nginx容器
docker run -d -p 80:80 --name nginx -v /docker/nginx/nginx.conf:/etc/nginx/nginx.conf -v /docker/nginx/conf.d:/etc/nginx/conf.d -v /docker/nginx/logs:/var/log/nginx nginx:1.19.4
docker run -d -p 80:80 --name nginx -v /docker/nginx/nginx.conf:/etc/nginx/nginx.conf -v /docker/nginx/conf.d:/etc/nginx/conf.d -v /docker/nginx/logs:/var/log/nginx -v /docker/nginx/html:/usr/share/nginx/html nginx:1.19.4
2. 安装mysql
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v ./mysql/config:/etc/mysql -v ./mysql/data:/var/lib/mysql -v ./mysql/mysql-files:/var/lib/mysql-files mysql:8.0.27
3. 安装redis
docker run -p 6379:6379 --name redis --sysctl net.core.somaxconn=1024 -v ./docker/redis/conf/redis.conf:/etc/redis/redis.conf -v ./docker/redis/data:/data -v ./docker/redis/modules:/etc/redis/modules -d redis:7.2.3 redis-server /etc/redis/redis.conf --appendonly yes
4. 安装nacos
1. 拉取镜像
docker pull nacos/nacos-server:v2.2.3
2. 运行容器
docker run -d --name nacos --env MODE=standalone -p 8848:8848 -p 9848:9848 nacos/nacos-server:v2.2.3
docker run: 启动容器
-d: docker 后台运行
-name: 为容器创建名字
–env: 设置容器内的环境变量
-p 8848:8848: 将宿主机的8848端口映射到容器内的8848端口。Nacos的默认服务器端口是8848,外部访问时需要通过该端口
-p 9848:9848: 将宿主机的9848端口映射到容器内的9848端口。这个端口通常用于 Nacos 的监控和管理。
nacos/nacos-server.2.3:指定要运行的镜像和版本。
访问控制台,浏览器访问地址:http://localhost:8848/nacos
3. 复制配置文件、数据文件到宿主机
docker cp nacos:/home/nacos/conf ./docker/nacos
docker cp nacos:/home/nacos/data ./docker/nacos
4. 删除刚创建的 Nacos
容器
# 删除 nacos 容器
docker rm -f nacos
5. 重新跑一个容器
docker run -d --name nacos --privileged -e MODE=standalone -e JVM_XMX=300m -e JVM_XMS=300m -p 8848:8848 -p 9848:9848 -v ./docker/nacos/conf:/home/nacos/conf -v ./docker/nacos/data:/home/nacos/data -v ./docker/nacos/logs:/home/nacos/logs nacos/nacos-server:v2.2.3
–privileged: 使容器以特权模式运行,给予容器更多的权限,这通常用于需要更高权限的操作。
-e JVM_XMX=300m: 设置环境变量
JVM_XMX
,指定 JVM 最大堆内存为 300MB。-e JVM_XMS=300m: 设置环境变量
JVM_XMS
,指定 JVM 初始堆内存为 300MB。-v: 环境变量配置,宿主机与容器关于配置文件、数据、日志进行目录挂载
5. 安装minio
1. 下载镜像
docker pull minio:RELEASE.2023-09-30T07-02-29Z
2. 创建挂载目录
在 /docker/
创建 minio
文件夹,用户存放容器启动后,挂载配置文件和持久化数据
docker run -d \-p 9000:9000 \-p 9090:9090 \--name minio \-v /root/docker/minio/data:/data \-e "MINIO_ROOT_USER=xiaohongshu" \-e "MINIO_ROOT_PASSWORD=xiaohongshu" \minio:RELEASE.2023-09-30T07-02-29Z server /data --console-address ":9090"
docker run -d -p 9000:9000 -p 9090:9090 --name minio -v /root/docker/minio/data:/data -e "MINIO_ROOT_USER=xiaohongshu" -e "MINIO_ROOT_PASSWORD=xiaohongshu" minio/minio:RELEASE.2023-09-30T07-02-29Z server /data --console-address ":9090"
-p 9000:9000
: 将宿主机的 9000 端口映射到容器的 9000 端口。Minio 默认的 HTTP API 端口是 9000。-p 9090:9090
: 将宿主机的 9090 端口映射到容器的 9090 端口。这是 Minio 的 Web 控制台的端口。server /data --console-address ":9090"
: 启动 MinIO 服务器,并将数据存储在容器内的/data
目录。--console-address ":9090"
表示 Minio 的Web 控制台将在容器的 9090 端口上运行。
6. 安装Cassandra
1. 下载镜像
docker pull cassandra:latest
2. 创建挂载目录
在 /docker/
创建 cassandra
文件夹,用户存放容器启动后,挂载配置文件和持久化数据
3. 运行容器
docker run -d --name cassandra -p 9042:9042 -v /root/docker/cassandra/data:/var/lib/cassandra cassandra:latest
7. 安装zookeeper
1. 下载镜像
docker pull zookeeper:3.5.6
2. 创建挂载目录
在 /docker/
创建 zookeeper
文件夹,用户存放容器启动后,挂载配置文件和持久化数据
3. 运行容器
docker run -d --name zookeeper -p 2181:2181 -e TZ="Asia/Shanghai" -v /root/docker/zookeeper:/data -v /root/docker/zookeeper/conf:/conf zookeeper:3.5.6
进入 Zookeeper
docker exec -it zookeeper bash
命令行交互
./bin/zkCli.sh
8. 安装rocketmq
需要修改
docker run -d --network rocketmq --privileged=true --name rocketmq-namesrv -p 9876:9876 -v ./docker/rocketmq/namesrv/logs:/home/rocketmq/logs -v ./docker/rocketmq/namesrv/bin/runserver.sh:/home/rocketmq/rocketmq-5.3.1/bin/runserver.sh apache/rocketmq:5.3.1 sh mqnamesrv
# 复制容器中的启动脚本,到宿主机中
docker cp rocketmq-broker:/home/rocketmq/rocketmq-5.3.1/bin/runbroker.sh ./docker/rocketmq/broker/bin
docker run -d --network rocketmq --name rocketmq-broker --privileged=true -p 10912:10912 -p 10911:10911 -p 10909:10909 -v ./docker/rocketmq/broker/logs:/home/rocketmq/logs/rocketmqlogs -v ./docker/rocketmq/broker/store:/home/rocketmq/store -v ./docker/rocketmq/broker/config/broker.conf:/home/rocketmq/rocketmq-5.3.1/conf/broker.conf -v ./docker/rocketmq/broker/bin/runbroker.sh:/home/rocketmq/rocketmq-5.3.1/bin/runbroker.sh -e "NAMESRV_ADDR=rocketmq-namesrv:9876" apache/rocketmq:5.3.1 sh mqbroker --enable-proxy -c /home/rocketmq/rocketmq-5.3.1/conf/broker.conf
9. 安装Elasticsearch
1. 下载镜像
docker pull elasticsearch:7.3.0
2. 准备挂在文件夹
在 ./docker/
创建 elasticsearch
文件夹,用于将容器内部需要持久化的相关文件挂载在宿主机上。
3. 运行容器
docker run -d --name es7 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" elasticsearch:7.3.0
-p 9200:9200 -p 9300:9300
:端口映射,将容器内的端口暴露到主机上:9200:9200
:将容器内的 9200 端口(Elasticsearch 的 REST API 接口)映射到主机的 9200 端口,供外部使用。9300:9300
:将容器内的 9300 端口(Elasticsearch 的内部通信端口,用于节点间通信)映射到主机的 9300 端口。
-e "discovery.type=single-node"
:通过环境变量设置 Elasticsearch 以 单节点模式 运行:- 作用:避免集群模式下的主节点选举。
- 场景:适用于开发、测试环境,不需要集群功能。
-e ES_JAVA_OPTS="-Xms1024m -Xmx1024m"
:设置 JVM 内存参数:-Xms1024m
:设置 JVM 的初始堆内存为 1024MB。-Xmx1024m
:设置 JVM 的最大堆内存为 1024MB。- 作用:确保 Elasticsearch 启动时使用 1GB 固定堆内存(建议与物理内存配置匹配,以提高性能)。
4. 复制需要挂载数据卷
docker cp es7:/usr/share/elasticsearch/config ./docker/elasticsearch
docker cp es7:/usr/share/elasticsearch/data ./docker/elasticsearch
docker cp es7:/usr/share/elasticsearch/plugins ./docker/elasticsearch
5. 修改配置文件
cluster.name: "xiaohongshu-cluster"
network.host: 0.0.0.0
# 跨域相关
http.cors.allow-origin: "*"
http.cors.enabled: true
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
- 修改集群名称为
"xiaohongshu-cluster"
- 添加跨域配置
6. 删除启动的容器并重新运行一个
docker rm -f es7
重新运行
docker run -d --name es7 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" -v ./docker/elasticsearch/config:/usr/share/elasticsearch/config -v ./docker/elasticsearch/data:/usr/share/elasticsearch/data -v ./docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins -v ./docker/elasticsearch/logs:/usr/share/elasticsearch/logs elasticsearch:7.3.0
浏览器访问地址:http://localhost:9200/ ,确保启动成功。
- 对配置的log文件权限进行修改
7.安装可视化工具
elasticsearch-head
是一个开源的 Web 前端工具,用于 管理和可视化 Elasticsearch 集群。
官方地址: https://github.com/mobz/elasticsearch-head
拉取镜像
docker pull mobz/elasticsearch-head:5-alpine
运行容器
docker run -d --name es-head -p 9100:9100 mobz/elasticsearch-head:5-alpine
访问控制台
浏览器访问地址:http://localhost:9100/
8. 安装Ik插件(分词器)
进入es7容器内
docker exec -it es7 /bin/sh
执行如下命令,并退出容器
bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/7.3.0
然后,执行 docker cp
命令,将已安装的 ik
插件相关文件,复制到宿主机中,防止丢失:
docker cp es7:/usr/share/elasticsearch/plugins/analysis-ik ./docker/elasticsearch/plugins
docker cp es7:/usr/share/elasticsearch/config/analysis-ik ./docker/elasticsearch/config
重启 es7
容器
docker restart es7
ik分词模式
ik
分词器提供了如下两种中文分词模式:
ik_max_word
:使用细粒度分词,适合索引时使用;ik_smart
:使用智能分词,适合查询时使用;
10. 安装Kibana
下载镜像
docker pull kibana:7.3.0
注意:Kibana 的版本号需要保持和 es 一样,防止有兼容性问题。
运行容器
docker run -d --name kibana -p 5601:5601 kibana:7.3.0
准备数据挂载文件夹
将 Kibana
容器中的配置文件夹,复制到宿主机的 ./docker/kibana
文件夹下
docker cp kibana:/usr/share/kibana/config ./docker/kibana
编辑配置文件
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://172.17.0.1:9200" ] # 修改为宿主机 IP 地址
xpack.monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN" # 设置使用中文
elasticsearch.hosts
: 因为 Kibana 需要连接 es, 这里将 IP 地址修改为172.17.0.1
, 方便访问到宿主机的 9200 端口;- 添加
i18n.locale: "zh-CN"
配置,以将 Kibana 设置为中文模式;
删除旧容器,运行新的
docker rm -f kibana
前提开着es
docker run -d --name kibana -p 5601:5601 -v ./docker/kibana/config:/usr/share/kibana/config kibana:7.3.0
查看日志
docker logs -f kibana
访问控制台
浏览器访问地址 localhost:5601
,即可登录 Kibana 控制台:
export JAVA_HOME=/usr/local/jdk1.8.0_341
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib