目录
安装Docker
Docker发生意外错误
1. 虚拟机平台
2. 适用于Linux的视窗子系统
3. 在BIOS中启用虚拟化
运行CodeProject.AI服务器Docker镜像
拉取Docker镜像疑难解答
启动Docker容器
Docker与Windows Service
这是怎么回事?

我能够在Windows上成功安装 CodeProject.AI服务器,所以我想看看是否可以让它在Docker中运行。我以前从未使用过Docker,所以我从头开始。
以下是安装Docker的完整演练,然后在Docker中运行CodeProject.AI服务器。
安装Docker

第一步是开始使用 Docker。向下滚动并单击适用于Windows的下载。

这将下载 Docker Desktop Installer.exe。双击该文件,安装程序将运行。安装程序完成后,单击关闭并重新启动。

计算机完成重新启动后,将启动Docker订阅服务协议。单击接受。在大多数情况下,就是这样。Docker已安装!
Docker发生意外错误

在此阶段,我遇到了如上所示的错误。该错误提供了更多帮助的链接,但实际上对我有帮助的链接是疑难解答主题。在“虚拟化”下,有一个所需内容的列表。
- 虚拟机平台
- 适用于Linux的Windows子系统
- 在BIOS中启用虚拟化
- 在Windows启动时启用虚拟机管理程序
1. 虚拟机平台

首先,必须启用虚拟机平台。为此,请转到Windows菜单并开始键入“打开或关闭Windows功能”。这将打开“Windows功能”面板。

确保已选中适用于Linux的虚拟机平台和 Windows子系统。
2. 适用于Linux的视窗子系统

即使检查了我的Linux子系统,我仍然收到一个错误:
引用:
WSL 2安装不完整。WSL 2 Linux内核现在使用单独的MSI更新包进行安装。请单击链接并按照说明安装内核更新:Manual installation steps for older versions of WSL | Microsoft Learn。请在安装Linux内核后重新启动。

要安装MSI软件包,请按照错误的说明进行操作。转到 Manual installation steps for older versions of WSL | Microsoft Learn,单击用于x64机器的WSL2 Linux内核更新包,下载wsl_update_x64.msi。

双击“wsl_update_x64.msi和Windows子系统进行Linux更新安装”。重新启动计算机。

另一种方法是使用PowerShell。要打开PowerShell终端,请转到Windows菜单并开始键入“PowerShell”。然后启动 Windows PowerShell 应用程序。
然后只需使用以下命令:
wsl --install
3. 在BIOS中启用虚拟化

重新启动计算机时,输入BIOS设置。通常,当计算机从黑屏加载时执行此操作。只需按下魔术按钮即可进入BIOS,实际按钮因机器而异。它是删除、Esc、F1、F2 或 F4。对我来说,它是删除或 F2。
如果您运行的是Windows 11,则可能需要转到“设置”,然后:
- 转到系统
- 选择右侧面板上的恢复卡
- 在“高级设置”行上,单击“立即重新启动”
然后机器重新启动可能会提供更多的箍来跳过(他们真的不希望您弄乱这些BIOS设置)。
进入BIOS后,您将看到类似于以下内容的内容:

从这里,查找CPU配置。它要么在处理器、芯片组或北桥下。虚拟化要么被称为VT-x,AMD-V,SVM或Vanderpool。我的电脑是一台较旧的华硕机器,所以虚拟化实际上被列为英特尔虚拟化技术,以前被称为范德浦。启用此功能,然后保存更改并退出。

重新启动后,Docker启动并准备就绪!
运行CodeProject.AI服务器Docker镜像
注意:如果您已经将CodeProject.AI服务器安装为Windows服务,则需要先停止它。如果你不这样做,你会得到一个错误,我在Docker与Windows服务(本文最后部分)中解决了这个问题:决定你是希望 CodeProject.AI 服务器作为Windows服务还是Docker容器运行。你可以两者兼而有之,但没有好处,只是一团糟。
第一步是确保Docker Desktop正在运行。实际上,您希望确保Docker服务正在运行,但Docker Desktop会为您处理此问题。
第二步是按Windows键并键入CMD打开命令提示符。我想运行 CodeProject.AI服务器的CPU版本,所以我首先需要拉取镜像:
docker pull codeproject/ai-server:latest
要使用启用GPU的版本,请使用:
docker pull codeproject/ai-server:gpu
然后镜像开始拉动:

拉取Docker镜像疑难解答
在安装过程中,Docker在拉取镜像时卡住了。查看 Docker论坛,这可以通过重新启动Docker来解决。

转到系统托盘中的Docker,然后右键单击该图标。选择“重新启动”。

弹出一条警告消息。图像拉取过程会记住已下载的内容,因此请点击重新启动。
然后返回到commant提示符并重新输入您之前键入的pull命令。Docker应该从中断的地方继续,并继续拉取镜像。
启动Docker容器
拉取镜像后,它将出现在Docker桌面中。

要启动容器,请单击播放按钮。然后出现一个对话框,提供可选设置。

为容器命名,将主机端口设置为32168,然后单击运行。
转到Docker Desktop中的“容器”选项卡,查看正在运行的容器。

单击端口标题下的链接以打开仪表板。

就是这样!您现在正在从Docker容器中运行CodeProject.AI服务器。
Docker与Windows Service
在CodeProject.AI服务器Docker镜像完成拉取并尝试启动镜像后,它并不是上面显示的一帆风顺。当我启动镜像时,出现此错误:
引用:
docker:来自守护程序的错误响应:端口不可用:暴露端口TCP 0.0.0.0:32168 -> 0.0.0.0:0:侦听 tcp 0.0.0.0:32168:绑定:通常只允许每个套接字地址(协议/网络地址/端口)使用一次。
这是怎么回事?
为了对正在发生的事情进行故障排除,我需要找出哪个进程正在使用端口32168。我打开命令提示符并键入:
netstat -aon | findstr 32168

从列表中,注意TCP [..]32168 [::]:0 LISTENING 10592。这表示进程10592正在使用端口32168。但是什么是进程10592?要找出答案,请在命令提示符下键入:
tasklist | findstr 10592
答案是:CodeProject.AI Server.exe。如果您希望使用相同的端口32168,则需要事先停止CodeProject.AI服务器。
如果未停止CodeProject.AI服务器,请打开命令终端。

开始输入“服务”并启动服务应用程序。向下滚动并查找CodeProject.AI服务器,右键单击它,然后选择停止。你现在应该可以走了。
如前所述,您应该决定是要在Docker中运行CodeProject.AI服务器还是作为Windows服务运行。两者都是可能的,但混乱和不必要的。如果您真的希望同时运行两者,只需选择不同的端口号即可。
https://www.codeproject.com/Articles/5347282/How-to-Run-CodeProject-AI-Server-in-Docker