实操 本地docker配置环境

下载docker

https://www.docker.com/products/docker-desktop/

汉化:https://github.com/asxez/DockerDesktop-CN

准备工作:创建目录结构

在你的电脑上(例如 D:\ 盘)创建一个文件夹 D:\Desktop\damai_pro\DamaiEnv,并在其中创建以下子目录和文件,用于存放配置文件。

D:\DamaiEnv\
├── mysql\
│   ├── conf\
│   │   └── my.cnf      <-- 需要新建此文件
│   ├── data\
│   └── log\
└── zookeeper\
    ├── conf\
    │   └── zoo.cfg     <-- 需要新建此文件
    ├── data\
    └── logs\

第一步:创建 Docker 网络

为了让 Elasticsearch 和 Kibana 顺利通信,我们需要先创建一个专用网络 。

docker network create elk
image-52786c33

第二步:安装 MySQL 5.7

1. 创建配置文件D:\DamaiEnv\mysql\conf\ 下新建 my.cnf,内容如下 :

[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8

2.关闭本地运行的mysql服务,否则会因为3306被占用而无法启动容器中的mysql

image-4b4594f0 image-117d7ba0

3. 启动容器 注意:将 -v 后的路径改为你的实际路径。

docker run -d -p 3306:3306 --privileged=true -v D:\Desktop\damai_pro\DamaiEnv\mysql\log:/var/log/mysql -v D:\Desktop\damai_pro\DamaiEnv\mysql\data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql mysql:5.7 --character-set-server=utf8 --collation-server=utf8_general_ci
image-154b8533

4.开放MySQL权限

Docker 容器内的 MySQL 默认只允许 root 用户从 localhost 登录,而通过客户端(如 Navicat/DataGrip)连接时,来源 IP 是 Docker 网关 IP(例如 172.17.0.1),所以会被拒绝。

需要进入 MySQL 容器,修改 root 用户的权限,允许任意 IP 连接。

docker exec -it mysql bash

登录 MySQL(在容器内部):

mysql -u root -p

输入密码: root

执行授权 SQL

use mysql;
update user set host = '%' where user = 'root';
flush privileges;
exit;

退出容器

exit
image-5102598e

第三步:安装 Nacos (修复端口版)

文档中指出原命令缺少 9849 端口映射会导致无法启动,这里已补全 。

docker run -d -p 8848:8848 -p 9848:9848 -p 9849:9849 -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.3
image-5fac3847

第四步:安装 Redis (修复密码版)

同理 关闭本机redis服务

image-4d994e67

文档指出原命令 -e requirepass 无效,需将密码命令放在镜像名之后 。

docker run -d --name redis -p 6379:6379 redis:6.0.8 --requirepass 123
image-4055b436

第五步:安装 Zookeeper

1. 创建配置文件D:\DamaiEnv\zookeeper\conf\ 下新建 zoo.cfg,内容如下 :

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data
clientPort=2181
  1. 启动容器
docker run -d --name zookeeper --privileged=true -p 2181:2181 --restart=always -v D:\Desktop\damai_pro\DamaiEnv\zookeeper\data:/data -v D:\Desktop\damai_pro\DamaiEnv\zookeeper\conf:/conf -v D:\Desktop\damai_pro\DamaiEnv\zookeeper\logs:/datalog zookeeper
image-89238db4

第六步:安装 Kafka

关键点:你需要获取你本机的 IP 地址(打开 CMD 输入 ipconfig,找到 IPv4 地址,例如 192.168.x.x)。不要使用 localhost127.0.0.1,否则微服务可能连不上。

image-38d63212

请将下方命令中的 YOUR_LOCAL_IP 替换为你的真实 IP :

比如我的本机 IP 是:172.20.10.5

docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=172.20.10.5:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.20.10.5:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka
image-f81ccd7d

注意:这里假设 Zookeeper 也是通过宿主机 IP 访问(即上面 Zookeeper 映射的 2181 端口)。

⚠️ 注意事项: 这个 IP (172.20.10.5) 看起来像是连接手机热点或特定局域网分配的。如果你断开网络或切换 Wi-Fi,这个 IP 可能会改变。如果 IP 变了,Kafka 可能会连不上,到时候需要删除旧容器(docker rm -f kafka)并用新 IP 重新运行这条命令。

第七步:安装 Elasticsearch (ES)

此步骤需要手动设置密码。

1. 启动容器

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
image-13ede01c

初始化密码 (重要) 容器启动后(需等待几十秒),在 PowerShell 执行以下命令进入交互模式 :

docker exec -it es /bin/bash

进入容器内部后,执行:

./bin/elasticsearch-setup-passwords interactive
image-f4283842

⚠️ 警告:设置密码时,不要使用纯数字,否则 Kibana 可能无法启动,建议使用 zxc321 或类似字母+数字组合 。请记住 elastickibana_system 用户的密码。(全设置为zw200495

第八步:安装 Kibana

将下方命令中的 你的密码 替换为上一步设置的 kibana_system 用户的密码(或者 elastic 用户密码)。

demo:

docker run -d --name kibana --net elk -p 5601:5601 -e ELASTICSEARCH_HOSTS=http://es:9200 -e ELASTICSEARCH_USERNAME="kibana_system" -e ELASTICSEARCH_PASSWORD="你的密码" -e "I18N_LOCALE=zh-CN" kibana:8.5.2

my:

docker run -d --name kibana --net elk -p 5601:5601 -e ELASTICSEARCH_HOSTS=http://es:9200 -e ELASTICSEARCH_USERNAME="kibana_system" -e ELASTICSEARCH_PASSWORD="zw200495" -e "I18N_LOCALE=zh-CN" kibana:8.5.2

注:因为使用了 --net elk,这里 ELASTICSEARCH_HOSTS 可以直接用容器名 http://es:9200,无需宿主机 IP。

image-e8d6eeb3

验证安装

image-ceebffe7
  1. Nacos: 访问 http://localhost:8848/nacos (账号密码均为 nacos)。

    image-07b0ac24
  2. ES: 访问 http://localhost:9200 (输入账号 elastic 和你设置的密码)。

    image-a35eb5ba
  3. Kibana: 访问 http://localhost:5601。(输入账号 elastic 和你设置的密码)。

    image-05a2d0c6
  4. MySQL/Redis: 使用客户端工具(如 Navicat, Redis Desktop Manager)连接 localhost 测试。

    • redis

      image-bd2183c8 image-80b5a1a3
    • mysql

      账号密码都是root

      image-7324610c

企业级项目导航:⬅️ 01-实操 | 02-实操 本地docker配置环境 | ➡️ 03-实操 项目启动