安装docker
背景
记录如何在本机 macOS(M1芯片)上安装 Docker,并通过 Docker 快速搭建 Redis + RabbitMQ + Nacos 开发环境。
1. 安装 Docker Desktop for Mac(Apple Silicon)
步骤
- 访问 Docker 官网。
- 点击「Download for Mac (Apple Chip)」下载适配 M1/M2 的版本。
- 安装并启动 Docker Desktop,首次启动会要求授权网络与文件访问,允许即可。
- 打开终端验证 Docker 是否可用:
如果正常输出版本号,说明 Docker 安装成功。
2. 使用 docker-compose 搭建 Redis + RabbitMQ + Nacos
创建一个项目目录并添加 docker-compose.yml
文件:
推荐配置
|
|
启动服务:
|
|
3. 服务验证
Redis
RabbitMQ
- 打开浏览器访问:http://localhost:15672
- 默认账号密码为:
guest
/guest
Nacos
- 访问:http://localhost:8848/nacos
- 默认账号密码:
nacos
/nacos
4. 容器管理常用命令
|
|
5. Docker 网络隔离概念
两个 docker-compose.yml
文件(A 和 B)默认是相互隔离的
如果分别运行了:
那么:
- A 项目和 B 项目会各自创建独立的 Docker 网络(比如
a_default
,b_default
)。 - 所以: A 中的容器不能通过服务名访问 B 中的容器(除非你显式地让它们加入同一个网络)
解决方法:让两个 compose 项目加入同一个自定义网络
步骤 1:创建一个共享网络(只需要执行一次)
|
|
步骤 2:在 A 和 B 的 docker-compose.yml
中都添加网络配置
docker-compose-a.yml
示例:
docker-compose-b.yml
示例:
这样就实现了:
- A 和 B 项目虽然是不同的 compose 文件
- 但它们的容器都加入了同一个网络(
shared-network
) - 所以:
A 中的服务可以通过服务名(如 b-service
)访问 B 中的服务,反之亦然
访问方式举例
假设:
- A 中的服务叫
a-service
- B 中的服务叫
b-service
那么在任意一个容器中:
就可以成功访问了
6. 容器名称与服务名称
Compose 服务名 ≠ 容器名称,但默认情况服务名和容器名称是一致的前缀
- 服务名来自于 Compose 文件中
services
下的键名
下面的 Compose 文件中:
这里的 mysql
,就是 服务名,也是 Docker Compose 在内部网络中注册的 DNS 主机名。也就是说,其他容器访问这个服务时用的就是 mysql
这个名字。
- 容器名称(Container Name)是 Docker 为每个服务生成的容器实际名字,一般是:
|
|
比如容器名是:
|
|
这个名字是由 Compose 自动生成的,表示:
- 项目名(一般来源于目录名)是
docker
- 服务名是
mysql
- 第一个实例是
1
但这只是容器的实际名称,不是网络通信的主机名。
结语
至此,Redis + RabbitMQ + Nacos 的本地开发环境就搭建完成了!可以直接在 Spring Boot 项目中连接这些服务,进行异步处理、缓存与配置中心的实战开发。
文章作者 会写代码的小郎中
上次更新 2025-07-22
许可协议 CC BY-NC-ND 4.0