参考文档

使用 Docker Compose 安装 Milvus standalone(即单机版),进行一个快速 milvus 的体验。
前提条件:
- 系统可以使用 centos 或者 ubuntu,这里使用的是CentOS Linux release 7.7.1908 (Core)
- 系统已经安装 docker 和 docker-compose
- milvus 版本这里使用 2.3.12

下载 etcd、minio、milvus
由于 milvus 依赖 etcd 和 minio,因此需要先启动这 2 个组件。同样也使用 docker 进行启动。
etcd :用来存储 milvus 的元数据。
minio:用来存储 milvus 的向量数据和索引数据。
下载 milvus-standalone-docker-compose.yml 文件,保存为 docker-compose.yml:
wget --no-check-certificate https://github.com/milvus-io/milvus/releases/download/v2.3.12/milvus-standalone-docker-compose.yml -O docker-compose.yml
这里经过了一定修改,让其更加方便使用。
这个 yml 文件里面固定了 etcd、minio、milvus 的启动参数。
先下载etct,minio,milvusdb
docker pull quay.io/coreos/etcd:v3.5.5
docker pull minio/minio:RELEASE.2023-03-20T20-16-18Z
docker pull milvusdb/milvus:v2.3.12
如果下载不下来(大概率是网络问题),我这有下载好的
通过网盘分享的文件:milvus
链接: https://pan.baidu.com/s/1pnQWw3wGRHeaKvq93sIsXQ 提取码: qqqq

假设文件已经传到了 Linux 的当前目录
docker load -i minio.tar
docker load -i etcd.tar
docker load -i milvusdb.tar
docker load -i attu.tar
配置docker-compose.yml
修改后的 docker-compose.yml 文件内容如下:里面的etcd,minio,milvusdb已经下载好了
version: '3.5'
services:
etcd:
container_name: milvus-etcd
image: quay.io/coreos/etcd:v3.5.5
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
ports:
- "2379:2379"
command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
healthcheck:
test: ["CMD", "etcdctl", "endpoint", "health"]
interval: 5s
timeout: 3s
retries: 10
minio:
container_name: milvus-minio
image: minio/minio:RELEASE.2023-03-20T20-16-18Z
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: 5s
timeout: 3s
retries: 10
standalone:
container_name: milvus-standalone
image: milvusdb/milvus:v2.3.12
command: ["milvus", "run", "standalone"]
security_opt:
- seccomp:unconfined
environment:
ETCD_ENDPOINTS: etcd:2379
MINIO_ADDRESS: minio:9000
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 compose up -d
-d 代表后台启动
其它一些相关命令:
docker-compose ps 查看容器
docker-compose stop 停止容器
docker-compose start 启动容器
docker-compose down 停止并删除容器 ( 特别注意以免误删容器 )
使用 ps 命令查看容器 :
如果看到 healthy状态,说明容器内的服务可以正常使用了。
这时候已经完成 milvus 服务的启动。如果想查看 milvus 的日志,可以使用如下命令:
docker logs -f milvus-standalone
milvus-standalone 为容器的名称。
启动****attu
docker run -d \
--name = attu \
-p 8000 :3000 \
-e MILVUS_URL = 192 .168.189.110:19530 \
zilliz/attu:v2.3.9
web 访问地址 :
http://192.168.189.110:8000/
可选配置
也可以配置attu和etcd,minio,milvusdb一起启动
version: '3.5'
services:
etcd:
# ... (保持原有配置不变)
minio:
# ... (保持原有配置不变)
standalone:
# ... (保持原有配置不变)
attu: # <--- 新增的 Attu 服务
container_name: attu
image: zilliz/attu:latest # <--- 换成自己的版本
ports:
- "8000:3000"
environment:
MILVUS_URL: standalone:19530
depends_on:
- "standalone"
# networks 和 volumes 保持不变...
停止并移除之前单独运行的 Attu 容器
docker stop attu
docker rm attu
停止 Compose 服务
docker-compose down
#启动新配置
docker-compose up -d
访问:等待容器启动完成后,访问 http://192.168.189.110:8000。
- 原理 :此时 Attu 容器和 Milvus 容器在同一个 Docker 网络中。Attu 通过
standalone:19530直接连接 Milvus 的内部端口,不再经过宿主机 IP 转发,网络畅通无阻。

