xChar
·2 months ago

什么是 Docker

Docker 就像一个中央食堂,汇集了来自世界各地开发者的预制菜。你想要运行什么程序,就选择相应的预制菜,就像点餐一样简单。

这些预制菜包含了程序运行所需的一切,包括软件库、工具和配置,就像一个完整的运行时环境。Docker就像一个微波炉,只需将预制菜放进去,启动加热,就能轻松运行程序。

无论是开源软件还是其他复杂程序,Docker都能让你一键启动,无需担心繁琐的配置和环境搭建。

Docker 安装

Docker 有桌面客户端,安装相对而言比较简单,Win 系统需要开启 Hyper-V,下一步到完成。打开客户端没有报错就表示安装成功。

如果安装过程遇到奇奇怪怪问题,有时需要考虑是否安装的 win 盗版且阉割系统导致。

Docker 应用

Docker 就像一个巨大的软件仓库,里面存放着各种预制好的软件包,就像微信小程序一样,下载并运行就能使用。

我个人用到 Docker 有三个应用,Memos,Lobehub 和 Planka。

Lobehub 目前我使用过最好 Ai 集成工具之一,支持 Vercel 部署。本地如果安装 Ollma,安装一个 Docker 版 Lobe-Chat 是顺其自然的事情。

Memos 轻量级笔记服务,像 Flomo 轻松捕捉和分享你的精彩想法,可以当做离线朋友圈使用。

有些比较散碎文字,记录在 Memos,当可以构成一篇文章时,将碎片转到 Obsidian 整合创作。

这款 Trello 开源版的看板工具 Planka ,旨在满足个人和团队的项目管理需求。它具有与 Trello 类似的功能,包括看板、列表和卡片,但它是自托管的,这意味着你可以完全控制您的数据和隐私。

Docker 小技巧

我不需要熟练使用 Docker 桌面客户端,通常我只是打开,看看容器是否启动,仅此而已。

大部分操作使用命令,然而在我实际工作中,使用它们不超过五条。

我尝试使用客户端,比如删除,拉取等操作,能用,但不好用,容易出现各种小问题。

我个人琢磨最佳方式:几条常用命令+客户端可视化相结合。

Docker 拉取并启动项目

以 lobehub 为例,在开发者 GitHub 项目中找到 Docker 安装链接。

第一条命令,拉取镜像👇

Docker pull lobehub/lobe-chat

打开 CMD,复制粘贴链接地址,敲回车。

项目安装好之后,需要启动,即 下载镜像 → 启动容器。汽车需要启动才会动,如果你不想推它上路的话。

第二条命令,启动容器👇

Docker run -d -p 3210:3210 lobehub/lobe-chat

Docker 方便之处在于提升 lucky 值 ,对于普通人而言,Docker 已经降低了使用需要各种系统环境及各种配置的难点。

通常两条命令即可完成一个项目拉取,启动。

此时打开 Docker 桌面客户端,看看容器是否正常启动,点击链接就能用啦🎉

离线使用 Memos 记录闪念,用 LobeHut + Ollama 大模型进行文本生成和翻译,用 Planka 整理计划。

通过将本地端口映射到公网,并使用内网穿透技术,你可以从任何地方(家里、手机、其他电脑)访问你的 Docker 项目。

如果你想从办公室以外的地方访问你的 Docker 项目,你需要使用内网穿透,并且你的办公室电脑必须始终开机。

我习惯在本地使用 Docker,如果需要外网访问,则会使用 Vercel 或其他免费云端部署方案。

Docker 项目更新和卸载

Docker 核心价值在于免费,离线,安全。但它也有一个很大的劣势,项目更新,数据迁移等问题。

比如项目上游有更新,Docker 如何同步?当你需要换电脑时,本机存在项目数据该如何迁移到另外一台电脑?如何干净清爽卸载项目?

当项目上游有更新,通常会在项目应用内提示。先把容器停止移除,然后在镜像上拉取上游更新到本地,重新部署,启动容器。

停止移除容器,我们可以在 Docker 客户端操作,也可以使用命令,使用命令你需要知道容器名称。

使用客户端停止删除容器,简单直观,看图标就晓得了。

使用命令行停止删除容器,先看看有哪些容器,确定下容器名称,再停止删除。

Docker ps -a

停止并删除容器命令,以 memos 为例。

Docker stop memos & Docker rm memos

客户端和命令操作都可以,两者取其一。

同样更新项目镜像方式可以使用桌面客户端按钮或者使用命令。

如使用命令就是上文中的第一条拉取命令。

如使用客户端更新,点击该镜像文件的 Pull。

当下载新版本之后,旧版本镜像可以删除(Docker 镜像 pull 后生成新镜像而不是覆盖原有镜像)

现在我们需要重新启动容器,记住,这个操作不要使用客户端方式,请使用命令启动容器,比如上文中的第二条启动容器命令

如此一来,项目就更新到最新版本与上游同步,通常旧的记录都会在,建议更新前备份数据。比如 memos 有笔记导出功能。

让项目容器随 Docker 启动而启动

一切顺利的话,想必你已经愉快玩耍起来了。

当你下班关机,第二天开机之后发现,有些程序无法运行。那是因为容器没有随着 Docker 启动而启动。

此时手动打开 Docker 客户端,选择容器,点击启动按钮即可。但每次开机都要手动点火,未免太麻烦,希望容器可以随 Docker 一起启动。

两条命令搞定。

首先我们需要判断该容器是否设置为开机自启,如果是为“Always”,如不是为“no”,以 memos 为例👇

Docker inspect -f "{{ .HostConfig.RestartPolicy.Name }}" memos

如果是 no,就执行下一条命令,设置随机启动。

Docker update --restart always memos

然后再运行上一条命令,检查是否设置成功,“Always”即成功设置。

Docker 命令扩展

随着 Docker 使用的深入,越来越多的命令和操作会让人感到困惑。若不能将这些命令和操作有效地组织起来,就会形成碎片化的知识,导致 Docker 难以掌握和使用。

我个人处理方式,把命令分门别类保存。这不,使用 Docker 搭建的 Planka 不就派上用场了吗。

在 Docker 搭建项目,应当是日常使用频率较高的应用。

此外,定期清理不必要的镜像和容器至关重要。镜像是容器的底层基础,而容器则是运行中的实例。过多的未使用镜像和容器会占用大量存储空间,并可能减慢系统速度。

因此,避免安装了很多不常用的项目,造成无端消耗电脑性能。

Loading comments...