Windows 11安装 Docker Desktop

本文讲述了作者在Windows11上安装部署私有知识库,如MetaLlama3和StableDiffusion,选择不使用docker而采用ollama-ui和saddle简化WebUI的过程,进而探讨了Docker的核心概念,如镜像、容器和仓库,以及Docker的安装和使用,包括在Windows上的配置和测试,最后强调了Docker以空间换时间的特点和对SSD盘的影响。
摘要由CSDN通过智能技术生成

       近来,笔者想好好学习和应用一下AIGC技术,在Windows主机安装部署私有知识库(Window 11本地部署 Meta Llama3)以及Stable Diffusion等(Stable Diffusion Windows本地部署超详细教程Window 11本地部署 Meta Llama3-8b),在本地部署Llama3实践过程中,作为一个有一点“简洁控”的我,不想让自己的电脑安装太多软件,其Web前端没有使用Ollama官方推荐以及大多数人所使用的docker+open-webui方案,而采用最为简单的ollama-uisaddle作为WebUI,回避了docker软件的安装。而今天想要安装部署anything-llm以实现在本机部署私有知识库时,发现官方还是建议采用docker来部署AnytingLLM。虽然,Anything-LLM也利用NodeJS直接部署,但毕竟还是没有现成的docker一键部署方便。看来docker是一个不能忽略的工具了,人生苦短,得抓住重点,先把RAG+LLM的框架搭建起来再说,后面再抽空学习和研究相关细节。既然这样,那就把Docker安装起来吧,

一、 Docker简介

       Docker 是一个开源的应用容器引擎,开发者可以打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

1.  Docker核心概念

       镜像、容器和仓库是Docker三个核心概念。
       Docker镜像(Image)是一个特殊的文件系统,提供容器运行时所需的程序、库、资源、配置等文件,另外还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像是一个静态的概念,不包含任何动态数据,其内容在构建之后也不会被改变,是一个只读模板。

       容器(Container)是镜像的运行实例,镜像与容器的关系,就是面向对象编程中类与对象的关系,我们定好每一个类,然后使用类创建对象,对应到Docker的使用上,则是构建好每一个镜像,然后使用镜像创建我们需要的容器。Docker利用容器来运行应用,容器是从镜像创建的运行实例,它可以被启动,开始、停止、删除。容器时在linux上本机运行,并与其他容器共享主机的内核,它运行的一个独立的进程,不占用其他任何可执行文件的内存,非常轻量;另一方面,容器进程是被隔离的,或者说进程的外面套了一个保护层,对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。

       仓库(Repository)是一个集中存储和分发镜像的服务。最大的公开仓库是Docker Hub,是Docker提供用于存储和分布镜像的官方Docker Registry,也是默认的Registry。Docker Hub有很多官方或其他开发提供的高质量镜像供我们使用。

2.  Docker实现原理       

       Docker本质就是宿主机的一个进程,底层使用LXC来实现。LXC,即Linux软件容器(Linux Containers),是一种操作系统层虚拟化(Operating system–level virtualization)技术,将linux进程沙盒化,为Linux内核容器功能的一个用户空间接口。它将应用软件系统打包成一个软件容器(Container),内含应用软件本身的代码,以及所需要的操作系统核心和库。透过统一的名字空间和共享API来分配不同软件容器的可用硬件资源,创造出应用程序的独立沙箱运行环境,使得Linux用户可以容易的创建和管理系统或应用容器。

      在Linux内核中,提供了cgroups功能,来达成资源的区隔化。它同时也提供了名称空间区隔化的功能,使应用程序看到的操作系统环境被区隔成独立区间,包括行程树,网络,用户id,以及挂载的文件系统。LXC利用cgroups与名称空间的功能,提供应用软件一个独立的操作系统环境,软件容器(Container)本身极为轻量化,提升了创建虚拟机的速度。

       LXC工作模式是这样的,使用lxc-create创建一个容器(名称空间),然后通过模板(早期shell脚本,目前yaml脚本),执行安装过程。这个模板,会自动实现安装过程,这个安装就是指向了你想创建的容器(名称空间)的系统发行版的仓库,利用仓库中的程序包下载至本地来完成安装过程。于是这个容器(名称空间)就像虚拟机一样使用。

      Docker是通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作,利用LXC来实现类似VM的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源。

       与传统虚拟化技术相比,容器的优势在于:

       1)与宿主机使用同一个内核,性能损耗小;

       2)不需要指令级模拟;

       3)不需要即时(Just-in-time)编译;

       4)容器可以在CPU核心的本地运行指令,不需要任何专门的解释机制;

       5)避免了准虚拟化和系统调用替换中的复杂性;

       6)轻量级隔离,在隔离的同时还提供共享机制,以实现容器与宿主机的资源共享。

       使用Docker,配置工作从资源管理中分离了出来,而部署工作则不值一提:执行docker run,环境的镜像会被拉取下来并准备运行,所消耗的资源更少并且是内含的,不会干扰其他环境,因而容器化越来越受欢迎。

二、 Docker安装

       1.  到官网 Install Docker Desktop on Windows下载最新官方Docker for Windows链接:

       2. 配置Windows环境

       Windows11环境中,选择系统->可选功能,点击“更多Windows 功能”:

        在“启动或关闭Windows功能”中勾选图中的三项:

       在这里,我们只是想使用Docker完成Docker镜像的快捷部署,暂时不深入其他的功能,考虑各方面使用WSL2是最好的选择,而且Hyper-v不适合家庭版安装Docker,所以这里不需要安装Hyper-V。

       3. 安装Docker Desktop

       双击下载的Docker Desktop Installer.exe,一路无脑缺省设置即可:

       安装完毕后,点击Close and restart。

  重启电脑后,点击Docker Desktop图标,可是却只是显示“Docker Engine is Stopped”,查了一下资料,可能是wsl版本过低的原因,运行wsl --update:

        再重新启动“Docker Desktop”,一切正常。

三、Docker测试

        我们下拉一个镜像过来:

docker pull mintplexlabs/anythingllm

         按照官方说明,输入下列命令:

# Run this in powershell terminal
$env:STORAGE_LOCATION="$HOME\Documents\anythingllm"; `
If(!(Test-Path $env:STORAGE_LOCATION)) {New-Item $env:STORAGE_LOCATION -ItemType Directory}; `
If(!(Test-Path "$env:STORAGE_LOCATION\.env")) {New-Item "$env:STORAGE_LOCATION\.env" -ItemType File}; `
docker run -d -p 3001:3001 `
--cap-add SYS_ADMIN `
-v "$env:STORAGE_LOCATION`:/app/server/storage" `
-v "$env:STORAGE_LOCATION\.env:/app/server/.env" `
-e STORAGE_DIR="/app/server/storage" `
mintplexlabs/anythingllm;

AnythingLLM | Your personal LLM trained on anything       打开浏览器,输入网址http://localhost:3001/,显示Anyting LLM入口:

        Docker真是方便啊,几乎零配置,一键启动。我们看一下,这个镜像,足足有2.65G之多,太占用空间了!

       个人觉得,Docker就是一个典型的以空间换时间的工具,软件的安装部署越来越简单,然而,每个镜像由于其自包含性,占用的空间非常大,好在现在硬盘便宜。但对于SSD盘来说,其寿命就明显缩短了。

参考文献

AnythingLLM | Your personal LLM trained on anything

  • 17
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值