参考文档

https://milvus.io/docs/v2.3.x

使用 Docker Compose 安装 Milvus standalone(即单机版),进行一个快速 milvus 的体验。

前提条件:

  1. 系统可以使用 centos 或者 ubuntu,这里使用的是CentOS Linux release 7.7.1908 (Core)
  2. 系统已经安装 docker 和 docker-compose
  3. 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

docker save -o  etcd.tar  etcd:v3.5.5   然后把tar包传到linux

# 假设文件已经传到了 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
# ================= 新增的 attu =================
  attu: # <--- 新增的 Attu 服务
    container_name: attu
    image: zilliz/attu::v2.3.9
    ports:
      - "8000:3000"
    environment:
      MILVUS_URL: standalone:19530
    depends_on:
      - "standalone"


# ================= 新增的 Elasticsearch =================
  es:
    container_name: es8
    image: elasticsearch:8.11.0
    environment:
      - discovery.type=single-node
      - ES_JAVA_OPTS=-Xms1g -Xmx1g
      # 关闭安全认证,方便开发测试(无需密码,使用 http 协议)
      - xpack.security.enabled=false
      - xpack.security.http.ssl.enabled=false
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/es/data:/usr/share/elasticsearch/data
    networks:
      - default



# ================= 新增的 Kibana =================
  kibana:
    container_name: kibana8
    image: kibana:8.11.0
    environment:
      - ELASTICSEARCH_HOSTS=http://es:9200
      # 关闭 Kibana 登录,直接访问
      - XPACK_SECURITY_ENABLED=false
    ports:
      - "5601:5601"
    depends_on:
      - es
    networks:
      - default


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 转发,网络畅通无阻。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐