安装Redis
下载镜像
docker pull redis:6.0.8启动容器
docker run -d --name redis -p 6379:6379 -e redis:6.0.8nacos启动容器(开启鉴权方式)
docker run -d -p 8848:8848 -p 9848:9848 -e MODE=standalone -e nacos.core.auth.enabled=true -e nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789 -e nacos.core.auth.server.identity.key=XN3zr6HfJV%LjUPjRBQzBB -e nacos.core.auth.server.identity.value=B3CU%K3AxEAMrgPBdKLRQRL --name nacos-server nacos/nacos-server:v2.2.3Zookeeper启动容器
docker run -d --name zookeeper --privileged=true -p 2181:2181 --restart=always -v D:/workspace_dir_hostzookeeper/data:/data -v D:/workspace_dir_hostzookeeper/conf:/conf -v D:/workspace_dir_hostzookeeper/logs:/datalog zookeeper安装Kafka
下载镜像
docker search wurstmeister/kafka
docker pull wurstmeister/kafka启动容器
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=172.17.0.2:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka- -e KAFKA_ZOOKEEPER_CONNECT 指定zookeeper地址,如果zookeeper和kafka部署在一台云服务器,则地址可配置内网ip
- -e KAFKA_ADVERTISED_LISTENERS Kafka 的一个环境变量,用于指定 Kafka 将如何通告客户端它在外部可访问的地址。如果是云服务器,则得是公网ip,因为客户端连接的kafka地址要和这个一样
安装ElasticSearch
为了和后续的Kibana相通信,需要先用 docker 创建一个网络
建立容器间的通信
docker network create elk下载镜像
docker pull elasticsearch:8.5.2启动容器
docker run -d --name es --net elk -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms768m -Xmx768m" -e "xpack.security.http.ssl.enabled=false" -e "xpack.security.enrollment.enabled=true" elasticsearch:8.5.2- -p (小写)映射端口号,主机端口:容器端口
- -P(大写)随机为容器指定端口号
- –name 指定容器别名
- –net 连接指定网络
- -e 指定启动容器时的环境变量
- -d 后台运行容器
- xpack.security.http.ssl.enabled=false 关闭https访问
- xpack.security.enrollment.enabled=true 设置为true,可设置密码
设置密码
# 进入容器
docker exec -it es /bin/bash
# 执行命令配置密码
./bin/elasticsearch-setup-passwords interactive
设置成功后,输入地址 ip:9200,登入密码看到如下页面说明安装成功

Changed password for user [apm_system]
Changed password for user [kibana_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]
密码:123456
kibana_system
密码:qwertyes用户修改指定的密码
./elasticsearch-reset-password --username 用户名 -i
例:重置kibana 用户的密码
./elasticsearch-reset-password --username kibana -i
安装Kibana
这里Kibana的版本最好和ElasticSearch的版本一致
下载镜像
docker pull kibana:8.5.2
PS C:\Users\15129> docker network ls
NETWORK ID NAME DRIVER SCOPE
6c3266a046fd bridge bridge local
76e67ca4b8f7 elk bridge local
74cdd5c64769 host host local
fd6a68fe8b5c minikube bridge local
0328429f565e none null local
88dd02866fa6 onebot-agent bridge local
PS C:\Users\15129> docker network inspect elk启动容器
docker run -d --name kibana --net elk -p 5601:5601 -e ELASTICSEARCH_HOSTS=http://172.19.0.2:9200 -e ELASTICSEARCH_USERNAME="kibana_system" -e ELASTICSEARCH_PASSWORD="qwerty" -e "I18N_LOCALE=zh-CN" kibana:8.5.2- -p 5601:5601 映射端口号
- -e ELASTICSEARCH_HOSTS=http://ElasticSearch的地址:9200 指定ElasticSearch地址
- -e ELASTICSEARCH_USERNAME="kibana_system" 指定ElasticSearch账户
- -e ELASTICSEARCH_PASSWORD="密码" 指定ElasticSearch账户密码
- I18N_LOCALE=zh-CN 开启 kibana 的汉化
启动kibana后,输入地址 ip:5601,出现如下页面说明启动成功
-XX:MaxMetaspaceSize=256M -Xmx256M -Dspring.data.redis.password=qaz123 -Dspring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 -Dspring.kafka.bootstrap-servers=127.0.0.1:9092 -Delasticsearch.ip=127.0.0.1:9200 -Delasticsearch.userName=elastic -Delasticsearch.passWord=123 -Dprefix.distinction.name=my好的,根据您提供的 docker network inspect 命令输出,以下是每个容器的 IPv4 地址总结:
网络 bridge (网段: 172.17.0.0/16)
| 容器名称 (Container Name) | IPv4 地址 (IPv4 Address) |
|---|---|
nacos-server | 172.17.0.5 |
kafka | 172.17.0.6 |
redis | 172.17.0.4 |
mysql | 172.17.0.3 |
zookeeper | 172.17.0.2 |
网络 elk (网段: 172.19.0.0/16)
| 容器名称 (Container Name) | IPv4 地址 (IPv4 Address) |
|---|---|
kibana | 172.19.0.3 |
es (Elasticsearch) | 172.19.0.2 |
关键信息解读:
- 两个独立的网络: 您的 Docker 环境中配置了至少两个不同的桥接网络:默认的
bridge网络和自定义的elk网络。 - 不同网段: 每个网络都有自己的独立 IP 地址段(
172.17.x.x和172.19.x.x)。 - 网络隔离:
- 默认情况下,连接到同一个自定义网络(如
elk网络)的容器(kibana和es)之间可以通过容器名称直接通信。 - 不同网络中的容器(例如
kafka和es)默认是隔离的,不能直接通过容器名称进行通信。如果需要它们通信,需要将它们连接到同一个网络中。
- 默认情况下,连接到同一个自定义网络(如