docker安装中间件

docker安装

centorOS安装docker
1. 删除
do 复制代码
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源
java 复制代码
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. 拉取镜像
dockerfile 复制代码
docker pull nginx:1.19.4
2. 运行简单 nginx 容器
docker 复制代码
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 节点中,添加反向代理配置如下:

nginx 复制代码
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容器
dockerfile 复制代码
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 
dockerfile 复制代码
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

dockerfile 复制代码
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 复制代码
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. 拉取镜像
dockerfile 复制代码
docker pull nacos/nacos-server:v2.2.3
2. 运行容器
dockerfile 复制代码
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. 复制配置文件、数据文件到宿主机
dockerfile 复制代码
docker cp nacos:/home/nacos/conf ./docker/nacos
docker cp nacos:/home/nacos/data ./docker/nacos
4. 删除刚创建的 Nacos 容器
dockerfile 复制代码
# 删除 nacos 容器
docker rm -f nacos
5. 重新跑一个容器
dockerfile 复制代码
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. 下载镜像
dockerfile 复制代码
docker pull minio:RELEASE.2023-09-30T07-02-29Z
2. 创建挂载目录

/docker/ 创建 minio 文件夹,用户存放容器启动后,挂载配置文件和持久化数据

dockerfile 复制代码
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"
dockerfile 复制代码
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. 下载镜像
dockerfile 复制代码
docker pull cassandra:latest
2. 创建挂载目录

/docker/ 创建 cassandra 文件夹,用户存放容器启动后,挂载配置文件和持久化数据

3. 运行容器
docker 复制代码
docker run -d --name cassandra -p 9042:9042 -v /root/docker/cassandra/data:/var/lib/cassandra cassandra:latest

7. 安装zookeeper

1. 下载镜像
dockerfile 复制代码
docker pull zookeeper:3.5.6
2. 创建挂载目录

/docker/ 创建 zookeeper 文件夹,用户存放容器启动后,挂载配置文件和持久化数据

3. 运行容器
docker 复制代码
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
dockerfile 复制代码
docker exec -it zookeeper bash
命令行交互
dockerfile 复制代码
./bin/zkCli.sh

8. 安装rocketmq

需要修改

docker 复制代码
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 复制代码
# 复制容器中的启动脚本,到宿主机中
docker cp rocketmq-broker:/home/rocketmq/rocketmq-5.3.1/bin/runbroker.sh ./docker/rocketmq/broker/bin
docker 复制代码
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 复制代码
docker pull elasticsearch:7.3.0
2. 准备挂在文件夹

./docker/ 创建 elasticsearch 文件夹,用于将容器内部需要持久化的相关文件挂载在宿主机上。

3. 运行容器
docker 复制代码
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 复制代码
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. 修改配置文件
yaml 复制代码
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. 删除启动的容器并重新运行一个
dockerfile 复制代码
docker rm -f es7

重新运行

dockerfile 复制代码
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

拉取镜像
dockerfile 复制代码
docker pull mobz/elasticsearch-head:5-alpine
运行容器
dockerfile 复制代码
docker run -d --name es-head -p 9100:9100 mobz/elasticsearch-head:5-alpine
访问控制台

浏览器访问地址:http://localhost:9100/

8. 安装Ik插件(分词器)
进入es7容器内
dockerfile 复制代码
docker exec -it es7 /bin/sh
执行如下命令,并退出容器
dockerfile 复制代码
bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/7.3.0

然后,执行 docker cp 命令,将已安装的 ik 插件相关文件,复制到宿主机中,防止丢失:

dockerfile 复制代码
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 容器

dockerfile 复制代码
docker restart es7
ik分词模式

ik 分词器提供了如下两种中文分词模式:

  • ik_max_word:使用细粒度分词,适合索引时使用;
  • ik_smart:使用智能分词,适合查询时使用;

10. 安装Kibana

下载镜像
dockerfile 复制代码
docker pull kibana:7.3.0

注意:Kibana 的版本号需要保持和 es 一样,防止有兼容性问题。

运行容器
dockerfile 复制代码
docker run -d --name kibana -p 5601:5601 kibana:7.3.0
准备数据挂载文件夹

Kibana 容器中的配置文件夹,复制到宿主机的 ./docker/kibana 文件夹下

dockerfile 复制代码
docker cp kibana:/usr/share/kibana/config ./docker/kibana
编辑配置文件
yaml 复制代码
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 设置为中文模式;
删除旧容器,运行新的
dockerfile 复制代码
docker rm -f kibana

前提开着es

dockerfile 复制代码
docker run -d --name kibana -p 5601:5601 -v ./docker/kibana/config:/usr/share/kibana/config kibana:7.3.0

查看日志

dockerfile 复制代码
docker logs -f kibana
访问控制台

浏览器访问地址 localhost:5601 ,即可登录 Kibana 控制台:

java 复制代码
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
相关推荐
君不见,青丝成雪6 小时前
网关整合验签
大数据·数据结构·docker·微服务·系统架构
oneslide10 小时前
Kubernetes环境部署Redis集群
redis·容器·kubernetes
企鹅侠客10 小时前
k8s之Headless浅谈
云原生·容器·kubernetes
SHIPKING39313 小时前
【Docker安装】Windows10专业版安装教程
运维·docker·容器
编程的一拳超人13 小时前
Docker核心概念、常用命令与实战指南
运维·docker·容器
编程的一拳超人13 小时前
Docker 核心命令速查表(精细分类版)
运维·docker·容器
风吹一夏v13 小时前
Docker 部署 GitLab 和 GitLab Runner 指南
docker·容器·gitlab
曦樂~13 小时前
【Docker】网络
docker·容器·php
刘晓倩13 小时前
Docker Desktop(Windows/Mac)零外网部署 Dify 极简指南
macos·docker·容器
百***464514 小时前
SocketTool、串口调试助手、MQTT中间件基础
单片机·嵌入式硬件·中间件