安装
docker run -d --name attu -p 3000:3000 -e MILVUS_URL=localhost:19530 zilliz/attu:v2.6.3
因为我本地 3000 已经被 memgraph-lab 占用,所以这里调整一下端口号。
ip 查看
docker inspect -f "" milvus-standalone
172.18.0.4
检查服务
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
adaf15c2e48a milvusdb/milvus:v2.6.9 "/tini -- milvus run…" 6 hours ago Up 17 seconds (health: starting) 0.0.0.0:9091->9091/tcp, [::]:9091->9091/tcp, 0.0.0.0:19530->19530/tcp, [::]:19530->19530/tcp milvus-standalone
9c64aea0f953 minio/minio:RELEASE.2024-12-18T13-15-44Z "/usr/bin/docker-ent…" 6 hours ago Up 17 seconds (health: starting) 0.0.0.0:9000-9001->9000-9001/tcp, [::]:9000-9001->9000-9001/tcp milvus-minio
1d41338fe36a quay.io/coreos/etcd:v3.5.25 "etcd -advertise-cli…" 6 hours ago Up 17 seconds (health: starting) 2379-2380/tcp milvus-etcd
登录
http://localhost:13000/#/connect
默认账密
用户名: root
密码: Milvus
实际上默认配置应该是没启动的,参考 https://github.com/zilliztech/attu/issues/161
登录失败
报错:
Request URL http://localhost:3000/api/v1/milvus/connect
Request Method POST
Status Code 401 Unauthorized
请求信息:{"username":"","password":"","address":"172.18.0.4:19530","token":"","database":"default","checkHealth":true,"clientId":"dob42d","ssl":false,"webui_api_base":"","readonly_mode":false,"isManaged":false,"isServerless":false,"isDedicated":false}
响应信息:{"statusCode":401,"message":"Deadline exceeded"}
日志
可以发现二者不在一个网络
> docker logs attu
POST 401 /api/v1/milvus/connect 15116.135 ms @ Fri, 30 Jan 2026 02:09:05 GMT ::ffff:172.17.0.1 from undefined Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36
POST /api/v1/milvus/connect 401 Error: 4 DEADLINE_EXCEEDED: Deadline exceeded
POST 401 /api/v1/milvus/connect 15110.073 ms @ Fri, 30 Jan 2026 02:09:26 GMT ::ffff:172.17.0.1 from undefined Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36
跨网络问题
attu 和 milvus 跨网络了。
networks:
default:
name: milvus
重新启动
# 删除旧的
docker rm -f attu
# 启动新的
docker run -d --name attu --network milvus -p 3000:3000 -e MILVUS_URL=localhost:19530 zilliz/attu:v2.6.3
配置信息
Address: milvus-standalone:19530
Username: (留空)
Password: (留空)
Database: default
这里的 address 使用 milvus 的 image 名称,避免 ip 变化。
可以了!主要还是网络的坑。
测试
配置文件
version: '3.5'
services:
etcd:
container_name: milvus-etcd
image: quay.io/coreos/etcd:v3.5.25
environment:
- ETCD_AUTO_COMPACTION_MODE=revision
- ETCD_AUTO_COMPACTION_RETENTION=1000
- ETCD_QUOTA_BACKEND_BYTES=4294967296
- ETCD_SNAPSHOT_COUNT=50000
volumes:
- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
command: etcd -advertise-client-urls=http://etcd:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
healthcheck:
test: ["CMD", "etcdctl", "endpoint", "health"]
interval: 30s
timeout: 20s
retries: 3
minio:
container_name: milvus-minio
image: minio/minio:RELEASE.2024-12-18T13-15-44Z
environment:
MINIO_ACCESS_KEY: minioadmin
MINIO_SECRET_KEY: minioadmin
ports:
- "9001:9001"
- "9000:9000"
volumes:
- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
command: minio server /minio_data --console-address ":9001"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
standalone:
container_name: milvus-standalone
image: milvusdb/milvus:v2.6.9
command: ["milvus", "run", "standalone"]
security_opt:
- seccomp:unconfined
environment:
ETCD_ENDPOINTS: etcd:2379
MINIO_ADDRESS: minio:9000
MQ_TYPE: woodpecker
volumes:
- ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
interval: 30s
start_period: 90s
timeout: 20s
retries: 3
ports:
- "19530:19530"
- "9091:9091"
depends_on:
- "etcd"
- "minio"
networks:
default:
name: milvus
搞了半天还是不行。于是决定降低版本
降低版本
docker run -d --name attu -p 13000:3000 -e MILVUS_URL=172.18.0.4:19530 zilliz/attu:v2.6
参考资料
https://milvus.io/docs/zh/install_standalone-docker.md
