【大模型杂货铺】 阿里云服务器 Milvus 极简安装教程

一、核心步骤总述

安装 Docker 环境 → 配置 Docker 核心参数 → 开放端口 → 部署 Milvus → 部署 Attu

二、完整核心命令

阶段 1:安装 Docker 及 Docker Compose(基础环境)

bash 复制代码
# 1. 安装依赖工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
bash 复制代码
# 2. 添加 Docker 官方源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum clean all && sudo yum makecache

中间有报错的命令, 请忽略!!!

bash 复制代码
# 3. 安装 Docker 引擎(自动安装最新稳定版)
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
bash 复制代码
# 4. 启动 Docker 并设置开机自启
sudo systemctl start docker && sudo systemctl enable docker

# 5. 验证 Docker 安装成功(输出版本即正常)
sudo docker --version
sudo docker compose version
sudo docker run hello-world

阶段 2:配置 Docker(镜像源 + 共享内存,Milvus 必需)

先说遇到的坑:

复制代码
[root@iZ7xvg95b816r5dah90go7Z ~]# sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).

问题是国内无法访问https://registry-1.docker.io/v2/, 需要配置国内镜像源.

bash 复制代码
# 1. 写入 Docker 核心配置(国内镜像源+共享内存, 这两个我都测试了, 可以访问)
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://docker.m.daocloud.io/", "https://mirror.aliyuncs.com/"],
  "default-shm-size": "2g"
}
EOF



# 2. 重启 Docker 使配置生效
sudo systemctl daemon-reload && sudo systemctl restart docker

# 3. 验证配置(显示镜像源即生效)
docker info | grep "Registry Mirrors" -A 2
bash 复制代码
# 4. 测试能否下载镜像
sudo docker run hello-world

阶段 3:开放阿里云安全组端口(远程访问关键,控制台操作)

(需在阿里云 ECS 控制台手动配置,命令无法替代)
  1. 登录阿里云 ECS 控制台 → 目标实例 → 「安全组」→ 「配置规则」

  2. 添加入方向规则 2 条:

    • 「Milvus 远程访问」: 端口 19530/19530(TCP),访问来源 0.0.0.0/0

      3000/3001 都可以, 默认 3000, 我这里是因为 3000 被占用了, 所以改成 3001

    • 「Milvus-Attu 可视化工具」: 端口 3001/3001(TCP),访问来源 0.0.0.0/0

  3. 保存规则(实时生效)

阶段 4:部署 Milvus 最新稳定版(v2.4.17)

bash 复制代码
# 1. 创建工作目录并进入
mkdir -p /root/milvus_compose && cd /root/milvus_compose

# 2. 下载 Milvus 配置文件(国内加速)
wget https://mirror.ghproxy.com/https://github.com/milvus-io/milvus/releases/download/v2.4.17/milvus-standalone-docker-compose.yml -O docker-compose.yml
复制代码
# 3. (可选)限制 Milvus 内存(适配 2核1.8G 服务器)
sudo tee -a docker-compose.yml <<-'EOF'
  deploy:
    resources:
      limits:
        memory: 1.2G
EOF
# (注:上述命令会在 standalone 服务末尾添加内存限制,若手动编辑更稳妥,直接执行也可)

# 4. 启动 Milvus(自动拉取镜像,后台运行)
docker compose up -d
复制代码
# 5. 验证 Milvus 启动成功(3个容器均为 Up 即正常)
docker compose ps

阶段 5:部署 Attu 可视化工具(3001 端口避冲突), MILVUS_URL皇冠城你自己的 ip

bash 复制代码
# 1. 清理残留 Attu 容器
docker rm -f $(docker ps -aqf "name=attu") 2>/dev/null

# 2. 启动最新版 Attu,映射 3001 端口
docker run -d -p 3001:3000 -e MILVUS_URL=[你自己的 ip]:19530 zilliz/attu:latest

# 3. 验证 Attu 启动成功
docker ps | grep attu

阶段 6:验证 Milvus 可用性(本地+远程)

bash 复制代码
# 1. 服务器本地验证(安装 Python 客户端并测试连接)
pip install pymilvus --upgrade
python -c "from pymilvus import connections; connections.connect('localhost', 19530); print('✅ Milvus 连接成功!')"

# 2. 远程访问(本地电脑操作)
# 浏览器打开:http://8.163.12.157:3001
# Python 远程连接代码:
# from pymilvus import connections; connections.connect(host='8.163.12.157', port='19530'); print('✅ 远程连接成功!')

在浏览器打开 attu

三、调用 Docker Compose V2 工具的关键命令

操作需求 核心命令
停止 Milvus 服务 docker compose down
后台启动 Milvus 服务 docker compose -up -d
快速重启正在运行的 Milvus 服务 docker compose restart
查看所有容器的状态 docker compose ps
查看 Milvus 日志 docker compose logs -f standalone
停止 Attu 工具 docker stop $(docker ps -qf "name=attu") 2>/dev/null
重新启动 Attu 工具 docker run -d -p 3001:3000 -e MILVUS_URL=8.163.12.157:19530 zilliz/attu:latest
彻底清理 Attu 容器 docker rm -f $(docker ps -aqf "name=attu")
清理 Milvus 数据(重新部署用) docker compose down -v

关键命令说明:

  1. docker compose ps

    NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
    milvus-etcd quay.io/coreos/etcd:v3.5.5 "etcd -advertise-cli..." etcd 2小时前 Up 2小时(healthy) 2379-2380/tcp
    milvus-minio minio/minio:RELEASE.2023-03-20T20-16-18Z "/usr/bin/docker-ent..." minio 2小时前 Up 2小时(healthy) 9000-9001/tcp
    milvus-standalone milvusdb/milvus:v2.4.17 "/tini -- milvus run..." standalone 2小时前 Up 2小时(healthy) 0.0.0.0:19530->19530/tcp, 0.0.0.0:9091->9091/tcp

核心结果字段解读:

  • NAME:容器名称(对应服务名 + 前缀);
  • STATUS:容器状态(关键!):
    • Up (healthy):正常运行(健康状态,最优);
    • Up:运行中,但未做健康检查(也正常);
    • Exited (代码):容器已退出(异常,需看日志排查);
  • PORTS:端口映射(确认 19530 端口是否正常映射)。
  1. docker compose up -d
    docker compose up -d(注意是 up 不是 -up,少个横杠)启动的容器,正是由当前目录下的 docker-compose.yml 文件指定的------ 这个文件是 Docker Compose 的 "配置清单",里面写清了要启动哪些服务(容器)、用什么镜像、端口映射、依赖关系等核心信息。
    以部署的 Milvus 为例,docker-compose.yml 里定义了 3 个服务,所以会启动 3 个容器:
    • standalone:Milvus 核心服务容器(镜像 milvusdb/milvus:v2.4.17);
    • etcd:Milvus 依赖的元数据存储容器(镜像 quay.io/coreos/etcd:v3.5.5);
    • minio:Milvus 依赖的对象存储容器(镜像 minio/minio:RELEASE.2023-03-20T20-16-18Z)。

      所以在执行docker compose up -d时, 必须在 docker-compose.yml 所在目录执行命令

其他问题:

问题 1: You don't have permission to access the database: default

这个错误提示 You don't have permission to access the database: default 是因为 Milvus 2.2.x 版本默认启用了数据库权限控制,而 Attu 连接时没有正确的权限导致的。解决方法很简单,两步即可:

  • 第一步:在服务器上修改 Milvus 配置(允许访问 default 数据库),
    • 编辑 docker-compose.yml 文件,添加一行配置(允许默认数据库访问):- MILVUS_AUTHORIZATION_ENABLE=false # 关闭权限校验(适合测试环境)
    • 找到 environment 节点(默认提供的配置里已经有 ETCD_ENDPOINTS、MINIO_ADDRESS 这两行);
    • 在这两行下面新增一行:MILVUS_AUTHORIZATION_ENABLE=false;
yaml 复制代码
standalone:
  container_name: milvus-standalone
  image: milvusdb/milvus:v2.2.8
  command: ["milvus", "run", "standalone"]
  environment:
    ETCD_ENDPOINTS: etcd:2379
    MINIO_ADDRESS: minio:9000
    MILVUS_AUTHORIZATION_ENABLE: false  # 新增这一行,关闭权限校验
  volumes:
    - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
  ports:
    - "19530:19530"
    - "9091:9091"
  depends_on:
    - "etcd"
    - "minio"
  • 保存后重启:
bash 复制代码
docker compose down && docker compose up -d

这样 Milvus 就会关闭权限校验,Attu 就能正常连接 default 数据库了。

  • 第二步:重新用 Attu 连接
相关推荐
小毅&Nora2 小时前
【向量数据库】Milvus向量数据库 ③ 深度解析与性能优化实战
数据库·性能优化·milvus
昙鱼4 天前
Markdown文件导入Milvus向量数据库完整指南
数据库·ai·milvus
昙鱼4 天前
embeddingModel操作milvus数据库集合
spring boot·milvus·spring ai
x***J3484 天前
VueWebSocket案例
分布式·milvus·appcompat
6***x5455 天前
C++在计算机视觉中的图像处理
c++·图像处理·计算机视觉·游戏引擎·logback·milvus
weixin_446260859 天前
Milvus:高效能的云原生向量数据库
数据库·云原生·milvus
勇往直前plus10 天前
Milvus数据更新:使用Upsert API实现标量字段批量更新
milvus
StringKai14 天前
milvus+langchain实现RAG应用
langchain·milvus
~kiss~14 天前
Milvus-云原生和分布式的开源向量数据库-介绍
分布式·云原生·milvus