Ubuntu docker安装milvusdb

一、安装docker

1.更新软件包
复制代码
sudo apt update
sudo apt upgrade

sudo apt-get install docker-ce docker-ce-cli containerd.io
查看是否安装成功
复制代码
docker -v

二、使用国内的镜像下载 milvusdb

milvusdb/milvus - Docker镜像详情和使用教程 - Docker镜像搜索下载milvusdb/milvusmilvusdb/milvus - Docker镜像详情和使用教程 - Docker镜像搜索下载

配置国内镜像

镜像加速

1、修改 /etc/docker/daemon.json,设置 registry mirror:

复制代码
sudo vim /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.xuanyuan.me"
  ]
}

2、重启docker:

复制代码
systemctl daemon-reload
systemctl restart docker

3.拉取镜像

复制代码
sudo docker pull milvusdb/milvus

sudo  docker pull milvusdb/milvus:master-20250316-7ebe3d70

三、下载安装脚本

在 Docker 中运行 Milvus (Linux) | Milvus 文档

下载Milvus 安装脚本

复制代码
sudo curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.sh

脚本 standalone_embed.sh 内容

复制代码
#!/usr/bin/env bash

# Licensed to the LF AI & Data foundation under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

run_embed() {
    cat << EOF > embedEtcd.yaml
listen-client-urls: http://0.0.0.0:2379
advertise-client-urls: http://0.0.0.0:2379
quota-backend-bytes: 4294967296
auto-compaction-mode: revision
auto-compaction-retention: '1000'
EOF

    cat << EOF > user.yaml
# Extra config to override default milvus.yaml
EOF
    if [ ! -f "./embedEtcd.yaml" ]
    then
        echo "embedEtcd.yaml file does not exist. Please try to create it in the current directory."
        exit 1
    fi

    if [ ! -f "./user.yaml" ]
    then
        echo "user.yaml file does not exist. Please try to create it in the current directory."
        exit 1
    fi
    
    sudo docker run -d \
        --name milvus-standalone \
        --security-opt seccomp:unconfined \
        -e ETCD_USE_EMBED=true \
        -e ETCD_DATA_DIR=/var/lib/milvus/etcd \
        -e ETCD_CONFIG_PATH=/milvus/configs/embedEtcd.yaml \
        -e COMMON_STORAGETYPE=local \
        -v $(pwd)/volumes/milvus:/var/lib/milvus \
        -v $(pwd)/embedEtcd.yaml:/milvus/configs/embedEtcd.yaml \
        -v $(pwd)/user.yaml:/milvus/configs/user.yaml \
        -p 19530:19530 \
        -p 9091:9091 \
        -p 2379:2379 \
        --health-cmd="curl -f http://localhost:9091/healthz" \
        --health-interval=30s \
        --health-start-period=90s \
        --health-timeout=20s \
        --health-retries=3 \
        milvusdb/milvus \
        milvus run standalone  1> /dev/null
}

wait_for_milvus_running() {
    echo "Wait for Milvus Starting..."
    while true
    do
        res=`sudo docker ps|grep milvus-standalone|grep healthy|wc -l`
        if [ $res -eq 1 ]
        then
            echo "Start successfully."
            echo "To change the default Milvus configuration, add your settings to the user.yaml file and then restart the service."
            break
        fi
        sleep 1
    done
}

start() {
    res=`sudo docker ps|grep milvus-standalone|grep healthy|wc -l`
    if [ $res -eq 1 ]
    then
        echo "Milvus is running."
        exit 0
    fi

    res=`sudo docker ps -a|grep milvus-standalone|wc -l`
    if [ $res -eq 1 ]
    then
        sudo docker start milvus-standalone 1> /dev/null
    else
        run_embed
    fi

    if [ $? -ne 0 ]
    then
        echo "Start failed."
        exit 1
    fi

    wait_for_milvus_running
}

stop() {
    sudo docker stop milvus-standalone 1> /dev/null

    if [ $? -ne 0 ]
    then
        echo "Stop failed."
        exit 1
    fi
    echo "Stop successfully."

}

delete_container() {
    res=`sudo docker ps|grep milvus-standalone|wc -l`
    if [ $res -eq 1 ]
    then
        echo "Please stop Milvus service before delete."
        exit 1
    fi
    sudo docker rm milvus-standalone 1> /dev/null
    if [ $? -ne 0 ]
    then
        echo "Delete milvus container failed."
        exit 1
    fi
    echo "Delete milvus container successfully."
}

delete() {
    delete_container
    sudo rm -rf $(pwd)/volumes
    sudo rm -rf $(pwd)/embedEtcd.yaml
    sudo rm -rf $(pwd)/user.yaml
    echo "Delete successfully."
}

upgrade() {
    read -p "Please confirm if you'd like to proceed with the upgrade. The default will be to the latest version. Confirm with 'y' for yes or 'n' for no. > " check
    if [ "$check" == "y" ] ||[ "$check" == "Y" ];then
        res=`sudo docker ps -a|grep milvus-standalone|wc -l`
        if [ $res -eq 1 ]
        then
            stop
            delete_container
        fi

        curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed_latest.sh && \
        bash standalone_embed_latest.sh start 1> /dev/null && \
        echo "Upgrade successfully."
    else
        echo "Exit upgrade"
        exit 0
    fi
}

case $1 in
    restart)
        stop
        start
        ;;
    start)
        start
        ;;
    stop)
        stop
        ;;
    upgrade)
        upgrade
        ;;
    delete)
        delete
        ;;
    *)
        echo "please use bash standalone_embed.sh restart|start|stop|upgrade|delete"
        ;;
esac

修改milvusdb/milvus 去掉后面的版本号,用上面已经下载了镜像,用上面的镜像。(直接执行脚本的话,下载不下来国外的镜像)。

执行脚本

复制代码
sudo bash standalone_embed.sh start

运行安装脚本后

  • 一个名为 Milvus 的 docker 容器已在19530 端口启动。
  • 嵌入式 etcd 与 Milvus 安装在同一个容器中,服务端口为2379 。它的配置文件被映射到当前文件夹中的embedEtcd.yaml。
  • 要更改 Milvus 的默认配置,请将您的设置添加到当前文件夹中的user.yaml文件,然后重新启动服务。
  • Milvus 数据卷被映射到当前文件夹中的volumes/milvus

你可以访问 Milvus WebUI,网址是http://127.0.0.1:9091/webui/

四、停止和删除 Milvus

停止和删除此容器的方法如下

复制代码
# Stop Milvus
$ sudo bash standalone_embed.sh stop

# Delete Milvus data
$ sudo bash standalone_embed.sh delete

你可以按以下步骤升级最新版本的 Milvus

复制代码
# upgrade Milvus
$ bash standalone_embed.sh upgrade
相关推荐
d0ublεU0x001 分钟前
【生存技能】ubuntu 24.04 如何pip install
linux·ubuntu·pip
Javis21114 分钟前
【Linux高级全栈开发】2.1高性能网络-网络编程——2.1.1 网络IO与IO多路复用——select/poll/epoll
linux·运维·网络
画中有画17 分钟前
一种安全不泄漏、高效、免费的自动化脚本平台
运维·安全·自动化·自动化脚本
suyukangchen24 分钟前
深入理解 Linux 阻塞IO与Socket数据结构
linux·数据结构·python
yong158585534342 分钟前
[SIGPIPE 错误] 一个 Linux socket 程序,没有任何报错打印直接退出程序
linux·服务器·网络·c++
南隅。2 小时前
【Linux】用户管理
linux
撸码到无法自拔3 小时前
云计算-私有云-私有云服务运维
运维·云计算
云边有个稻草人3 小时前
【Linux系统】第四节—详解yum+vim
linux·vim·yum·软件包管理器·linux软件生态·linux编辑器-vim使⽤·yum具体操作
小陶来咯3 小时前
【高级IO】多路转接之单线程Reactor
服务器·网络·数据库·c++
极小狐5 小时前
如何使用极狐GitLab 软件包仓库功能托管 maven?
java·运维·数据库·安全·c#·gitlab·maven