分类: 未分类

  • Docker 环境清理命令详解

    常用的 Docker 环境清理命令,包括删除停止容器、悬挂镜像、未使用卷和网络的操作,帮助用户释放系统磁盘空间。通过使用这些命令,用户可以有效地管理 Docker 资源,避免积累不必要的文件和镜像。

    1. 删除所有停止的容器:

    docker rm $(docker ps -aq -f status=exited)

    解释:

    • docker ps -aq -f status=exited:这个命令列出所有已经停止的容器(状态为 exited),-a 表示显示所有容器,-q 表示只返回容器的 ID,-f status=exited 是通过过滤器指定只列出已经停止的容器。
    • docker rm:这个命令用来删除指定的容器。通过 $(docker ps -aq -f status=exited),它将所有已经停止的容器 ID 传递给 docker rm,从而删除所有停止的容器。

    2. 删除所有悬挂的镜像(dangling images):

    docker rmi $(docker images -q -f dangling=true)

    解释:

    • docker images -q -f dangling=true:这个命令列出所有悬挂镜像的 ID。悬挂镜像是那些没有被任何容器使用的镜像,通常是构建过程中中间层生成的镜像。-q 用来只返回镜像的 ID,-f dangling=true 是通过过滤器指定只列出那些悬挂镜像。
    • docker rmi:这个命令用来删除指定的镜像。通过 $(docker images -q -f dangling=true),它会删除所有悬挂镜像。

    3. 删除所有未使用的卷:

    docker volume prune -f

    解释:

    • docker volume prune:这个命令删除所有没有被任何容器使用的卷。Docker 卷用于存储数据,卷被删除后,任何容器无法再访问这些数据。
    • -f:这是一个强制选项,它让 Docker 在执行删除操作时不需要确认。这样会直接删除所有未使用的卷。

    4. 删除所有未使用的网络:

    docker network prune -f

    解释:

    • docker network prune:这个命令删除所有没有被任何容器使用的网络。Docker 网络是容器之间的通信基础,当网络没有容器使用时,它就成了未使用的资源。
    • -f:这是一个强制选项,确保 Docker 执行删除操作时不需要任何确认。

    5. 清理所有未使用的资源(镜像、容器、卷、网络):

    docker system prune -af

    解释:

    • docker system prune:这个命令用于清理所有未使用的 Docker 资源,包括容器、镜像、卷和网络。它会删除所有没有被使用的资源,从而释放磁盘空间。
    • -a:这是一个选项,表示删除所有未使用的镜像,不仅仅是悬挂镜像。如果没有这个选项,默认只会删除悬挂的镜像。
    • -f:这个选项强制执行删除操作,无需确认。在生产环境中使用时要小心,确保不会误删重要资源。

    注意事项:

    这些命令会永久删除数据,因此请在使用之前务必确认没有误删除重要资源。如果你在生产环境中使用这些命令,建议先做备份,或者使用命令前检查当前容器、镜像和卷的状态,确保删除的内容是无用的。

  • 使用 Immich CLI 上传照片和视频

    要求

    在使用 Immich CLI 之前,请确保您的环境满足以下条件:

    • Node.js 20 或更高版本
    • npm(Node.js 包管理器)

    安装 Immich CLI

    全局安装

    使用 npm 进行全局安装 Immich CLI:

    npm i -g @immich/cli

    卸载旧版本

    如果您之前安装过旧版 CLI,建议先卸载以避免冲突:

    npm uninstall -g immich

    快速入门

    在使用 Immich CLI 之前,您需要先进行身份验证,并连接到您的 Immich 服务器。

    1. 认证登录

    您需要使用 API 密钥向 Immich 服务器进行身份验证。
    执行以下命令,将 [服务器地址][API 密钥] 替换为实际值:

    immich login [服务器地址] [API 密钥]

    示例:

    immich login http://192.168.1.216:2283/api HFEJ38DNSDUEG

    认证成功后:

    • CLI 会自动将您的凭据存储在 auth.yml 配置文件中。
    • 默认情况下,该文件位于 ~/.config/ 目录下。
    • 如果需要自定义存储目录,可以使用 -d 选项或 IMMICH_CONFIG_DIR 环境变量。

    安全提示:

    • 为确保账户安全,在使用完 CLI 后,建议执行 immich logout 注销,或手动删除 auth.yml 文件。

    2. 上传文件到 Immich 服务器

    上传单个或多个文件

    如果要上传单个文件或多个文件,可以直接指定文件路径:

    immich upload file1.jpg file2.jpg

    上传整个目录(默认不包含子文件夹)

    如果要上传目录中的所有文件(不包括子目录),可执行:

    immich upload directory/

    上传包含子文件夹的目录

    如果目录中包含多个子文件夹,并希望上传所有内容,请使用 --recursive 选项:

    immich upload --recursive directory/

    3. 预览上传内容

    如果不确定哪些文件会被上传,或者希望在执行前进行确认,可以使用 --dry-run 选项进行模拟运行:

    immich upload --dry-run --recursive directory/

    此命令不会实际上传文件,只会显示哪些文件将被上传。

    4. 提高上传性能

    跳过哈希计算

    默认情况下,Immich 在上传文件前会计算哈希值,以避免重复上传。
    如果您确定文件是唯一的,并希望加快上传速度,可以使用 --skip-hash 选项跳过哈希计算:

    immich upload --skip-hash --recursive directory/

    注意

    • Immich 服务器仍会进行哈希处理以执行重复数据删除,因此这个选项仅影响客户端性能。
    • 如果您的带宽充足,跳过哈希计算可以加快上传速度。

    5. 自动管理相册

    Immich CLI 支持自动创建相册,并根据文件夹名称或自定义名称进行管理。

    根据文件夹名称自动创建相册

    使用 --album 选项,Immich 会根据文件夹名称自动创建相册,并将对应文件上传到相册中:

    immich upload --album --recursive directory/

    上传文件到指定相册

    如果希望将所有文件上传到一个特定相册,可以使用 --album-name 选项:

    immich upload --album-name "My Summer Holiday" --recursive directory/

    6. 过滤上传文件

    有时,您可能需要跳过某些文件或目录,Immich 提供了 --ignore 选项来实现文件过滤。

    跳过特定文件或文件夹

    例如,如果您想跳过 Raw 文件夹下的所有内容,可以执行:

    immich upload --ignore **/Raw/** --recursive directory/

    排除多个文件类型

    可以使用多个 --ignore 规则,匹配不同的文件类型,例如排除 .tif 文件:

    immich upload --ignore **/Raw/** **/*.tif --recursive directory/

    7. 包含隐藏文件

    默认情况下,Immich 不会上传隐藏文件(文件名以 . 开头)。
    如果希望上传隐藏文件,可以使用 --include-hidden 选项:

    immich upload --include-hidden --recursive directory/

    获取 API 密钥

    使用 Immich CLI 之前,您需要一个 API 密钥,该密钥可以在 Web 界面的 用户设置面板 中获取。

    获取 API 密钥的步骤:

    1. 进入 Immich Web 管理界面
    2. 用户设置 页面中找到 API Key 选项
    3. 生成新的 API 密钥并复制,用于 CLI 登录
  • Windows 11如何彻底关闭 Shift 切换中英文输入

    关闭 Windows 11 中 Shift 键切换中英文输入的功能,主要是为了提高输入效率、减少误操作和干扰。许多用户在使用过程中可能会不小心按到 Shift 键,从而导致语言切换,这种情况往往会打断输入流程。通过关闭 Shift 键切换,可以避免这一问题,并且让用户可以根据自己的需求自定义输入法切换方式,提升工作或学习的效率。

    1. 打开“设置”:
      • 按下 Win + I 组合键,或者点击“开始”菜单,然后点击“设置”图标。
    2. 进入“时间和语言”:
      • 在“设置”窗口中,点击“时间和语言”。
    3. 选择“语言和区域”:
      • 在“时间和语言”菜单中,点击“语言和区域”。
    4. 选择“中文(简体,中国)”:
      • 在语言列表中找到“中文(简体,中国)”然后点击它。
    5. 点击“语言选项”:
      • 在中文(简体,中国)的选项下面,点击“语言选项”。
    6. 点击“微软拼音”的“键盘选项”:
      • 在键盘选项里,找到“微软拼音”选项,然后点击“键盘选项”。
    7. 点击“按键”:
      • 在微软拼音的键盘选项里面,点击“按键”选项。
    8. 取消 Shift 选项:
      • 在按键选项里面,找到与shift切换相关的选项,取消相关选项,然后点击确定。
  • Linux发行版在日常使用与业务需求的最佳选择

    关于如何在日常使用和业务应用中选择合适的Linux发行版的实用指南。文章详细分析了不同Linux发行版的特性、优势以及适用场景,以便能够根据自身需求做出选择。

    一、日常使用(个人用户、开发者)

    适用于普通用户、开发者、开源爱好者等,关注易用性、社区支持、桌面体验和软件生态

    1. 适合桌面用户

    • Ubuntu(桌面版)
      • 优势:安装简单,默认支持大量硬件,应用商店丰富,长期支持(LTS)版本可用。强大的社区支持,丰富的文档。
      • 适用场景:办公、日常上网、影音娱乐、开发环境(VS Code、Docker、PyCharm等)。
      • 缺点:默认启用 Snap,有时会影响软件加载速度。
    • Linux Mint
      • 优势:基于 Ubuntu,界面类似 Windows,适合新手,默认带有更多开箱即用的软件。对老旧硬件兼容性更好。
      • 适用场景:替代 Windows 或 macOS,稳定性好,轻量级硬件支持更友好。
      • 缺点:社区活跃度略低于 Ubuntu。
    • Fedora Workstation
      • 优势:采用 GNOME 桌面,支持最新的 Linux 技术(如 Wayland、PipeWire),开发者友好,拥有较新的软件包。
      • 适用场景:开发者、喜欢尝鲜的人。
      • 缺点:生命周期较短(6 个月一次大更新)。
    • Manjaro
      • 优势:基于 Arch,安装方便,提供滚动更新但更稳定,拥有 AUR(Arch User Repository),软件资源丰富。
      • 适用场景:希望使用 Arch 但不想手动配置的用户。
      • 缺点:部分更新可能导致系统不稳定。
    • Elementary OS
      • 优势:注重美观和简洁,界面类似 macOS,用户体验良好。
      • 适用场景:追求美观和易用性的用户。
      • 缺点:软件生态相对较小。
    • Pop!_OS
      • 优势:由 System76 开发,对游戏和开发支持良好,特别是对NVIDIA显卡支持优化。
      • 适用场景:游戏玩家,开发者,特别是深度学习开发者。
      • 缺点:相对较新的发行版,社区规模小于Ubuntu。

    2. 适合开发者

    • Ubuntu(LTS)
      • 适合大多数开发环境(Python、Node.js、Go、Docker、Kubernetes)。
      • 强大的社区支持,问题易解决。
    • Debian
      • 更稳定,适合需要长期运行的开发环境(服务器、容器化部署)。
      • 默认仓库软件较旧,可手动添加 backports 或使用 Testing 版。
    • Arch Linux
      • 适合高级用户,完全定制化,提供最新的软件版本和内核。
      • 适合构建极简、个性化的开发环境。
    • openSUSE Tumbleweed
      • 优势:滚动更新模型,提供最新的开发工具和库,YaST 管理工具强大。
      • 适用场景:追求最新软件的开发者。
      • 缺点:滚动更新可能带来不稳定性。

    二、业务使用(服务器、企业、生产环境)

    适用于服务器、数据中心、云计算、企业内部系统等,关注稳定性、安全性、长期支持、软件兼容性

    1. 企业服务器

    • Ubuntu Server(LTS)
      • 适合云计算(支持 AWS、Azure、GCP)、容器化部署(Docker、K8s)。
      • 5 年 LTS + 可选 10 年扩展支持(Ubuntu Pro)。
    • Debian
      • 以稳定著称,适用于 Web 服务器、数据库等长期运行的应用。
      • 软件更新相对较慢,但非常可靠。
    • Rocky Linux / AlmaLinux
      • RHEL(Red Hat Enterprise Linux)的完全兼容替代品,适用于企业生产环境。
      • 长期支持,适用于需要稳定性的企业服务器。
    • Red Hat Enterprise Linux(RHEL)
      • 适用于企业级业务,提供商业支持(Red Hat 订阅)。
      • 大规模生产环境、企业 IT 部门使用较多。
    • Oracle Linux
      • 优势:与Oracle产品兼容性好,适合运行Oracle数据库等。
      • 适用场景:运行Oracle相关业务的企业。
      • 缺点:相对RHEL,社区规模较小。

    2. 高性能计算 / 数据中心

    • SUSE Linux Enterprise Server(SLES)
      • 适用于 SAP、大型企业应用,专注于企业级可靠性。
    • Amazon Linux
      • AWS 官方 Linux 发行版,针对 AWS 进行了优化,适用于云计算。

    3. 容器 / 云计算 / DevOps

    • Ubuntu Server
      • 适用于 Docker、Kubernetes,支持 cloud-init,兼容 AWS/GCP/Azure。
    • Debian
      • 轻量级,适用于自定义容器环境,基础镜像占用较小。
    • RHEL / Rocky Linux / AlmaLinux
      • 适用于企业级 Kubernetes 部署(如 OpenShift)。
    • Flatcar Container Linux
      • 专为容器化工作负载设计(类似于已停更的 CoreOS)。

    4. 嵌入式 / 轻量级服务器

    • Alpine Linux
      • 体积小,安全性高,适用于容器和嵌入式设备。
    • Raspberry Pi OS
      • 适用于树莓派、物联网(IoT)项目。
    • NixOS
      • 优势:声明式配置,可重复构建,适合构建高度定制化的嵌入式系统。
      • 适用场景:需要高度定制化和可重复构建的嵌入式系统。
      • 缺点:学习曲线陡峭。
  • Docker安装Nextcloud

    Nextcloud 是一款开源的私有云存储服务,通过 Docker 部署 Nextcloud 可以快速搭建私有云存储服务,适用于个人和小型团队使用。

    1. 创建工作目录

    在服务器上创建一个专门用于存放 Nextcloud 数据的目录,并进入该目录:

    mkdir nextcloud && cd nextcloud

    2. 编写 docker-compose.yml 配置文件

    创建 docker-compose.yml 文件,并填入以下内容:

    services:
      db:
        image: postgres
        restart: always
        volumes:
          - db:/var/lib/postgresql/data
        environment:
          - POSTGRES_DB=nextcloud
          - POSTGRES_USER=nextcloud
          - POSTGRES_PASSWORD=nextcloud
    
      app:
        image: nextcloud
        restart: always
        ports:
          - 8080:80
        volumes:
          - nextcloud:/var/www/html
        environment:
          - POSTGRES_HOST=db
          - POSTGRES_DB=nextcloud
          - POSTGRES_USER=nextcloud
          - POSTGRES_PASSWORD=nextcloud
        depends_on:
          - db
    
      cron:
        image: nextcloud
        restart: always
        volumes:
          - nextcloud:/var/www/html
        entrypoint: /cron.sh
        depends_on:
          - db
    
    volumes:
      db:
      nextcloud:

    2.1 说明

    • 数据库服务 (db): 使用 PostgreSQL 作为 Nextcloud 的数据库存储。
    • Nextcloud 应用 (app): 主要的 Nextcloud 服务,映射端口 8080
    • 定时任务 (cron): 运行 Nextcloud 的定期任务,如清理临时文件、维护数据库等。
    • 数据卷 (volumes): db 用于存储数据库数据,nextcloud 用于存储 Nextcloud 相关文件。

    3. 启动 Nextcloud

    使用 docker compose 命令启动 Nextcloud 容器:

    docker compose up -d

    4. 访问 Nextcloud

    在浏览器中打开以下地址访问 Nextcloud 界面:

    http://<服务器IP>:8080

    首次访问时,需要创建管理员账号并完成初始化。

  • Docker安装Stirling-PDF

    Stirling-PDF 是一款基于 Docker 容器的开源 PDF 处理工具,专为OCR设计,能够将扫描的 PDF 文件中的图像或文字转换为可编辑的文本。通过集成 Tesseract OCR 引擎,Stirling-PDF 使得用户能够轻松提取 PDF 文件中的文字,无论是扫描文档、图像还是其他类型的图文混合内容。

    该工具提供了一个简洁的 Web 界面,用户可以上传 PDF 文件进行批量处理、OCR 识别和文本提取。它支持多语言识别,适用于不同语言的 OCR 数据包,能够帮助用户处理多种语言的文档。

    1. 创建 stirling-pdf 目录并进入

    首先,我们需要在你的服务器上创建一个新的目录来存放相关文件,并进入该目录。

    mkdir stirling-pdf && cd stirling-pdf

    2. 下载 Tesseract OCR 库

    Stirling-PDF 使用 Tesseract OCR 库进行文字识别。因此,我们需要下载其相关的语言数据。

    git clone https://github.com/tesseract-ocr/tessdata.git

    3. 创建 docker-compose.yml 文件

    创建 docker-compose.yml 文件,以便使用 Docker Compose 部署 Stirling-PDF 服务。

    stirling-pdf 目录下,创建并编辑 docker-compose.yml 文件:

    services:
      stirling-pdf:
        restart: always
        image: frooodle/s-pdf:latest
        ports:
          - '8080:8080'  # 映射容器内的 8080 端口到宿主机的 8080 端口
        volumes:
          - ./tessdata:/usr/share/tessdata
          - ./extraConfigs:/configs
          - ./customFiles:/customFiles/
          - ./logs:/logs/
        environment:
          - DOCKER_ENABLE_SECURITY=false
          - INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false
          - LANGS=en_GB

    4. 启动 Stirling-PDF

    创建完 docker-compose.yml 文件后,可以使用以下命令启动 Stirling-PDF 服务:

    docker compose up -d

    该命令会自动下载所需的 Docker 镜像并启动容器。启动完成后,Stirling-PDF 服务将开始运行。

    5. 使用浏览器访问 Stirling-PDF

    启动成功后,你可以在浏览器中通过以下地址访问 Stirling-PDF:

    http://<IP>:8080
    • 替换 <IP> 为你的服务器的 IP 地址,你就可以在浏览器中访问并使用 Stirling-PDF 进行 PDF 文件的处理了。