最新资讯

  • 全网最详细介绍飞牛NAS(Fn OS)之Docker篇+部署兰空图床

全网最详细介绍飞牛NAS(Fn OS)之Docker篇+部署兰空图床

2025-04-28 19:38:02 0 阅读

https://zhuanlan.zhihu.com/p/4803153585






 

前言:

很多新同学都开始使用NAS,因为大家都在推荐飞牛,那么很多不懂NAS的同学也开始使用飞牛(Fn OS)NAS,但在使用NAS的都是很多应用都要使用到Docker,哪docker又是什么?不管是飞牛还是群晖,或者绿联、极空间,就连软路由系统OpenWrt、爱快这些都有docker,那很多新同学就在问,这个docker到底是什么?它要怎么使用呢?

Docker 是一个开源的容器化平台,它可以让开发者将应用程序及其所有的依赖项(如库、配置文件等)打包成一个标准化的单元,这个单元被称为容器(Container)。

  1. 容器的概念
  • 容器就像是一个轻量级的虚拟机,但它与虚拟机有很大的区别。容器共享宿主机(运行容器的物理机或虚拟机)的操作系统内核,而虚拟机是在宿主机的操作系统之上模拟出一个完整的操作系统环境。这使得容器在资源利用上更加高效,启动速度更快。例如,一个容器可以在几秒钟内启动,而一个虚拟机可能需要几分钟。
  • 每个容器都有自己独立的文件系统、进程空间、网络接口等,就好像是在宿主机上隔离出了一个独立的小环境,用于运行特定的应用程序。以一个 Web 应用为例,你可以把 Web 服务器(如 Nginx)、后端应用程序
  • (如用 Python 编写的 Flask 应用)和数据库(如 MySQL)分别打包成不同的容器,它们可以在同一台宿主机上独立运行,并且相互之间可以通过网络进行通信。

  1. Docker 的工作原理
  • 镜像(Image):镜像是容器的基础,它是一个只读的模板,包含了运行一个容器所需的所有文件和配置信息。例如,你可以有一个 Ubuntu 操作系统的镜像,在这个镜像的基础上安装各种软件来构建出适合运行特定应用的镜像。镜像可以通过 Dockerfile(一个包含构建镜像指令的文本文件)来构建,也可以从 Docker Hub(Docker 官方的镜像仓库)等公共或私有仓库中获取。
  • 容器(Container):容器是从镜像创建出来的运行实例。当你使用docker run命令时,Docker 会根据指定的镜像创建一个容器并启动它。容器在运行过程中是可以被修改的(例如,在容器内创建新的文件、修改配置等),但是这些修改不会影响到原始的镜像。如果需要保存这些修改,可以将容器提交为一个新的镜像。
  • 仓库(Repository):仓库是用于存储和分发镜像的地方。Docker Hub 是最著名的公共仓库,它包含了大量的官方和用户贡献的镜像,涵盖了各种操作系统、数据库、Web 服务器等应用。企业也可以建立自己的私有仓库来存储内部开发和使用的镜像,以保证数据安全和镜像的可控性。

  1. Docker 的应用场景
  • 软件开发与测试:在软件开发过程中,不同的开发人员可能使用不同的操作系统和开发环境。使用 Docker 可以将应用程序和其依赖的环境打包成容器,这样无论在哪个开发环境中,只要安装了 Docker,就可以确保应用程序能够以相同的方式运行。在测试阶段,测试人员也可以快速地拉取包含应用程序和测试环境的容器,进行功能测试、性能测试等各种测试。
  • 微服务架构:在微服务架构中,应用程序被分解为多个小型的、独立的服务。每个微服务可以被打包成一个或多个容器,这些容器可以独立地开发、部署和扩展。例如,一个电商应用可以包括用户服务、产品服务、订单服务等微服务,每个微服务都可以在自己的容器中运行,并且可以通过网络接口(如 RESTful API)相互通信。
  • 持续集成 / 持续交付(CI/CD):Docker 是 CI/CD 管道中的重要工具。开发人员可以将代码提交到代码仓库,然后通过自动化的构建和测试流程,将代码打包成容器并进行测试。如果测试通过,容器可以被部署到生产环境中。这样可以大大提高软件的交付效率和质量,减少因为环境差异导致的问题。

正文:飞牛NSA的docker菜单介绍

一、设置docker存储位置

在我们安装好飞牛NAS之后会,在应用中心里面有着很多带有docker图标的应用程序

像很多新手飞牛用户使用的迅雷nas版、Alist小雅等应用程序都是带有docker图标的,这就表示这些应用是使用docker容器在运行,而在我们安装这些应用之前,我们需要打开Docker程序设置他的安装位置,不然就容易出现错误

出现这种情况的时候不要着急,我们先打开Docker

在这个界面里面可以看到我们容器的运行状况,docker使用了多少的CPU资源内存用了多少、网络如何,开启或者关闭docker服务,是否要开机自启等设置。设置完之后再回到应用中心安装带有docker图标的应用就不会出错了;

二、如何使用Docker部署项目

使用飞牛NAS 部署docker项目有三种方式,分别是:docker图像UI手动设置、docker-compose部署和ssh的docker命令直接拉取部署。

今天我们在这里只讲解前面两种方式docker图像UI和docker-compose

这ssh命令拉取和compose差不多,只是多了几个命令,因为图形UI上手简单,所以我们只讲解简单好上手的方式;

1、飞牛NAS的docker图像UI菜单介绍

概览:

我们在上面有讲解过,概览可以查看整个docker的全部状态,和开启或关闭docker

容器:

我们部署好的全部项目都会在容器这个界面中显示,如果我们需要修改容器设置的话也是在这个界面中,比如我想要修改迅雷的下载目录

在docker里面多少情况都是不支持中文,所以我们在这里看迅雷的容器名称是“xunlei

而在容器概况概览里面能看到更加详细的信息,像这个容器使用的端口号有哪些,现在都存储映射路径,网络分类,容器运行后使用的命令功能,还有使用的环境变量,每个容器都有属于自己的环境变量,一般情况下这个项目的官网都会公开这些环境变量以及修改方式;

下面我们就开始来修改一下迅雷的下载目录,我们在关闭了迅雷容器之后找到存储设置

容器的路径映射我在文章最后的常用变量中有讲解

如果要修改目录映射后的名称就要在这里修改相应的设置,环境变量的作用是告诉机器AA=11

在容器里面修改完目录后点击保存,然后要飞牛设置-应用-迅雷-添加目录(要和容量里面的一样)再点击应用中心启动迅雷,就设置完成了

Compose:

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它使用 YAML 文件来配置应用服务,使得可以轻松地在一个主机上创建、启动和管理多个相关联的容器。

  1. 基本概念
  • 服务(Service):在 Docker Compose 中,服务是一个抽象的概念,它代表了一个容器化的应用程序或应用程序的一个组件。例如,一个 Web 应用可能包含一个 Web 服务器服务(如 Nginx)、一个后端应用服务(如用 Python 编写的 Flask 应用)和一个数据库服务(如 MySQL)。每个服务都可以在 Docker Compose 文件中进行独立的配置,包括容器的镜像、环境变量、端口映射、卷挂载等参数。
  • 项目(Project):一个由 Docker Compose 管理的一组相关服务构成一个项目。当你使用 Docker Compose 启动一个应用时,所有相关的服务会一起被启动,并且它们之间可以根据配置进行交互。例如,一个简单的博客系统项目可能包括一个 Web 服务器服务、一个博客后端服务和一个数据库服务。

  1. 配置文件(docker - compose.yml)
  • 版本(Version):配置文件的开头通常需要指定版本号,如version: '3'(目前常用的版本是 3)。不同的版本号有不同的语法和功能支持。版本号决定了文件中可以使用的配置选项和语法规则。
  • 服务配置(Service Configuration)
    • 镜像(Image):用于指定每个服务所基于的 Docker 镜像。例如,image: nginx表示该服务使用官方的 Nginx 镜像。也可以指定自己构建的镜像,如image: my - private - repo/my - app - image:latest
    • 容器名称(Container Name):可以通过container_name选项为每个容器指定名称。不过如果不指定,Docker Compose 会自动为容器生成一个名称。例如,container_name: my - nginx - container
    • 端口映射(Port Mapping):使用ports选项来配置端口映射,格式与docker run命令中的端口映射类似。例如,ports: - "8080:80"表示将容器内的 80 端口映射到宿主机的 8080 端口。
    • 环境变量(Environment Variables):通过environment选项来设置服务的环境变量。可以是简单的键值对形式,如environment: - MYSQL_ROOT_PASSWORD = 123456,也可以从外部文件中加载环境变量。
    • 卷挂载(Volume Mounting):使用volumes选项来挂载卷。可以是将宿主机目录挂载到容器内,或者使用命名卷(Named Volume)。例如,volumes: -./data:/app/data表示将当前目录下的data目录挂载到容器内的/app/data目录。
    • 网络(Networks):可以通过networks选项来配置服务所属的网络。例如,创建一个自定义网络networks: - my - app - network,然后将多个服务添加到这个网络中,使得这些服务可以在这个网络内部相互通信。

  1. 常用命令
  • docker - compose up:此命令用于启动整个应用,它会根据docker - compose.yml文件中的配置创建和启动所有服务的容器。如果容器不存在,会先根据镜像创建容器。如果在配置文件中有更新,docker - compose up可以自动重建和重新启动相关的容器。可以使用-d选项(docker - compose up -d)来以后台模式启动服务,这样容器会在后台运行,就像使用docker run -d命令一样。
  • docker - compose down:用于停止和删除由docker - compose启动的所有容器、网络和卷(默认情况下,命名卷不会被删除,除非使用-v选项)。这是一个清理应用的命令,在重新部署或者不再需要应用的时候使用。
  • docker - compose ps:类似于docker ps
  • ,但它是用于查看由docker - compose启动的容器的状态。它会列出每个容器的名称、状态、端口映射等信息,方便了解应用中各个容器的运行情况。
  • docker - compose logs:用于查看所有服务容器的日志信息。可以通过服务名称来筛选特定服务的日志,例如docker - compose logs -f my - service-f选项用于实时跟踪日志,就像tail - f命令一样),这样可以方便地调试应用,查看各个容器内部的运行情况。

本地镜像:

我们现在都所有镜像都会在这里,在这里我们可以安装容器,删除镜像,具体如何安装容器,下面我们会案例演示

镜像仓库

飞牛的镜像仓库是飞牛官方镜像docker官方的镜像仓库的,我们也可以添加自己自建的仓库,或者添加其他第三方仓库

;在这里我们不过多讲解,有兴趣的我们下次可以聊聊如何自建docker镜像仓库

网络模式概述:

  1. 模式概述
  • Docker 提供了多种网络模式,用于容器之间以及容器与外部网络之间的通信。这些网络模式包括桥接网络(bridge)、主机网络(host)、无网络(none)和容器网络(container)。
  • 桥接网络(bridge)
    • 这是 Docker 默认的网络模式。在这种模式下,Docker 会创建一个虚拟的以太网桥(类似于软件交换机),将容器连接到这个桥上。每个容器会分配一个在宿主机上唯一的 IP 地址,这些 IP 地址通常是在一个私有子网中,例如 172.17.0.0/16(具体网段可能因 Docker 配置而不同)。容器可以通过这个 IP 地址相互通信,也可以通过宿主机的 IP 地址与外部网络通信。
    • 例如,当启动两个容器时,它们会被分配类似 172.17.0.2 和 172.17.0.3 的 IP 地址,就像它们连接在同一个局域网中的两台独立的计算机一样。容器内的应用程序可以通过这些 IP 地址进行通信,如一个容器内的 Web 服务可以通过另一个容器的 IP 地址访问其提供的 API 服务。

    • 主机网络(host)
      • 在主机网络模式下,容器直接使用宿主机的网络栈,而不是拥有自己独立的网络。这意味着容器和宿主机共享 IP 地址和端口,容器内的服务所监听的端口直接就是宿主机的端口。
      • 例如,如果在一个容器内启动一个监听 80 端口的 Web 服务,那么在主机网络模式下,这个服务实际上是在宿主机的 80 端口上监听。这种模式的优点是网络性能高,因为没有中间的网络转换层;缺点是容器之间的网络隔离性较差,而且端口冲突的可能性较大。(不熟悉的不建议使用)

    • 无网络(none)
      • 这种模式下的容器没有网络连接,就好像它是一个独立于网络之外的封闭环境。容器内部的应用程序无法通过网络与外界通信,也无法与其他容器通信。这种模式适用于一些特殊的应用场景,比如只需要在容器内部进行数据处理,不需要网络交互的情况。

    • 容器网络(container)
      • 容器网络模式允许一个容器与另一个指定的容器共享网络命名空间。这意味着它们共享相同的网络接口、IP 地址和端口范围等。例如,你可以让一个辅助容器(如日志收集容器)和主应用容器共享网络,这样辅助容器就可以直接访问主应用容器的网络资源,方便收集日志等操作。

  1. 自定义网络
  • 创建自定义网络:可以使用docker network create命令创建自定义网络。例如,docker network create my - network会创建一个名为my - network的网络。这个网络可以是桥接网络类型,也可以是其他支持的网络类型,具体取决于参数设置。
  • 连接容器到自定义网络:在创建容器时,可以使用--network选项将容器连接到自定义网络。例如,docker run - - network my - network my - container - image会将基于my - container - image的容器连接到my - network网络中。连接到同一个自定义网络中的容器可以通过容器名称或者容器别名(可以在连接网络时设置)进行通信,而不需要使用 IP 地址,这使得容器之间的通信更加方便和灵活。
  • 网络隔离与安全:自定义网络可以提供更好的网络隔离。不同的自定义网络之间的容器默认是不能互相通信的,只有在进行适当的网络配置(如设置网络连接规则)后才能通信。这有助于提高容器应用的安全性,例如,可以将数据库容器所在的网络与 Web 服务器容器所在的网络进行隔离,只允许通过特定的端口和协议进行通信,以防止未经授权的访问。

  1. 网络通信原理
  • 当容器通过桥接网络通信时,Docker 会使用网络地址转换(NAT)技术,将容器内部的私有 IP 地址转换为宿主机的公共 IP 地址,从而实现与外部网络的通信。对于容器之间的通信,数据会通过虚拟的以太网桥进行转发。
  • 在主机网络模式下,容器直接使用宿主机的物理网络接口进行通信,没有额外的网络转换层。而在容器网络模式下,共享网络命名空间的容器之间的通信就像在同一个操作系统进程之间通信一样,因为它们共享相同的网络资源。

2、docker图像UI部署案例

我们这次部署的是一个图床(Lsky-Pro),可以让你的图片用链接的方式出现,可以使用在你的博客上面,这个图床还需要使用数据库来存储数据所以我们这里就要部署两个容器

拉取MySQL镜像:

MySQL容器设置:

下载好镜像后,我们先打开文件管理器,创建一个MySQL文件夹来存储MySQL文件配置,然后在MySQL文件夹里面在新建log和mysql这两个文件夹,log是用来保存容器日志的,MySQL是用来存储配置文件的,这个文件夹的保存位置看大家的习惯

建好文件夹后我们回到docker的本地镜像里找到我们下载好的MySQL镜像点击运行

MYSQL_ROOT_PASSWORD=root 这个环境变量的意思是MySQL的root账号密码使用root作为密码,省去了我们后期还要使用ssh命令来修改root的密码,最后面点击下一步,检查设置没问题后点击创建开始运行MySQL容器,这样你就成功的创建了一个能够运行的容器

拉取phpmyadmin镜像:

因为我们已经有MySQL数据库,但是MySQL只能使用命令来使用它,这对于新手来说很麻烦,所以我们就在创建一个容器,使用图像界面来管理我们的数据库;

和上面一样,我们想到镜像仓库拉取phpmyadmin镜像

phpmyadmin容器设置:

phpmyadmin环境变量,看情况添加

PMA_ARBITRARY -设置为1时,将允许连接到任意服务器

PMA_HOST -定义MySQL服务器的地址/主机名

PMA_VERBOSE -定义MySQL服务器的详细名称

PMA_PORT -定义MySQL服务器的端口

PMA_HOSTS -定义逗号分隔的MySQL服务器的地址/主机名列表

PMA_VERBOSES -定义以逗号分隔的MySQL服务器详细名称列表

PMA_PORTS -定义以逗号分隔的MySQL服务器端口列表

PMA_USER和PMA_PASSWORD-定义用于配置身份验证方法的用户名

PMA_ABSOLUTE_URI -定义面向用户的URI HIDE_PHP_VERSION-如果定义,则将隐藏php版本(expose_php = Off)。设置为任何值(例如HIDE_PHP_VERSION = true)。

UPLOAD_LIMIT -如果设置,将覆盖apache和php-fpm

的默认值(默认值为2048 kb)

PMA_CONFIG_BASE64 -如果设置,将使用变量的base64解码内容覆盖默认的config.inc.php

PMA_USER_CONFIG_BASE64 -如果设置,将使用变量的base64解码内容覆盖默认的config.user.inc.php

下面我们在游览器上面输入飞牛ip:端口进入phpmyadmin的图像界面,我这里设置 的端口号是5623,飞牛的ip地址是192.168.100.53

哪我都phpmyadmin的地址就是http://192.168.100.53:5623(注意 “" : ” 是英文的:)

这里使用的账号密码是MySQL数据库的root账号和密码

我们要创建一个图床使用的数据库

拉取Lsky-pro镜像:

Lsky-pro容器设置:

我们要创建一个文件来保存图床的配置文件

到这里我们这三个容器都成功运行了,下面我们要开始设置lsky-pro

游览器新建一个窗口输入飞牛ip地址+lsky端口号我这里的是:192.168.100.53:8289

这里基本不会出现问题,直接点击下一步

没问题就可以点击安装了,安装成功后会出现下面界面

后面的使用教程可以自行百度,要是点击高,可以单独出一个文章

3、docker-compose部署案例

这里我们跳过创建目录的过程,直接讲解docker-compose部署lsky-pro

按要求来改yml文件,都写好了批注

version: '3'
services:
    lsky-pro:
        container_name: lsky-pro
        image: dko0/lsky-pro
        restart: always
        volumes:
            - ./data/html:/var/www/html  #映射到本地
        ports:
            - 7791:80
        environment:
            - MYSQL_HOST=mysql
            - MYSQL_DATABASE=lsky-pro
            - MYSQL_USER=lsky-pro
            - MYSQL_PASSWORD=lsky-pro
​
    mysql:
        image: mysql:8.0
        container_name: lsky-pro-db
        restart: always
        environment:
          - MYSQL_DATABASE=lsky-pro
          - MYSQL_USER=lsky-pro
          - MYSQL_PASSWORD=lsky-pro
          - MYSQL_ROOT_PASSWORD=lsky-pro
        volumes:
          - ./data/db:/var/lib/mysql

以下是对这个docker - compose.yml文件的批注:

整体结构和功能

  • 这个docker - compose.yml文件定义了一个包含两个服务(lsky - promysql)的 Docker Compose 项目,用于部署 lsky - Pro 图床应用及其依赖的 MySQL 数据库。

lsky - pro 服务

  • container_name: lsky - pro
    • 为 lsky - Pro 服务的容器指定了一个易于识别的名称,方便后续对该容器进行操作,比如使用docker stop/start等命令时可以直接使用这个名称。

  • image: dko0/lsky - pro
    • 指定了 lsky - Pro 服务所使用的 Docker 镜像。这里使用了自定义的镜像dko0/lsky - pro,假设这个镜像已经构建好并且包含了运行 lsky - Pro 应用所需的所有软件和配置。

  • restart: always
    • 配置容器在退出时总是自动重启。这对于保证服务的持续可用性很有用,例如在服务器重启或者容器意外停止的情况下,lsky - Pro 服务能够自动恢复运行。

  • volumes部分
    • -./data/html:/var/www/html:将本地目录./data/html挂载到容器内的/var/www/html目录。这样做的好处是可以方便地在本地修改和更新 lsky - Pro 的代码或配置文件(如果有需要),并且数据可以持久化存储在本地,不会因为容器的删除或重新创建而丢失。

  • ports部分
    • - 7791:80:将容器内的 80 端口(通常是 lsky - Pro 应用监听的端口)映射到宿主机的 7791 端口。这意味着可以通过访问宿主机的 7791 端口来访问 lsky - Pro 应用,实现了容器内服务与外部网络的通信。

  • environment部分
    • - MYSQL_HOST=mysql:设置 lsky - Pro 应用连接的 MySQL 数据库主机名。这里使用了mysql,是因为在 Docker Compose 网络中,服务之间可以通过服务名称相互访问,另一个服务mysql的容器名称就是lsky - pro - db,这样配置使得 lsky - Pro 能够找到对应的数据库服务。
    • - MYSQL_DATABASE=lsky - pro- MYSQL_USER=lsky - pro- MYSQL_PASSWORD=lsky - pro:分别指定了 lsky - Pro 应用连接 MySQL 数据库所使用的数据库名、用户名和密码,确保了应用与数据库之间的认证和数据访问的正确性。

mysql 服务

  • image: mysql:8.0
    • 使用官方的 MySQL 8.0 版本镜像来创建数据库容器,保证了数据库的稳定性和功能完整性。

  • container_name: lsky-pro-db
    • 为 MySQL 容器指定了名称,方便管理。

  • restart: always
    • 与 lsky - Pro 服务容器一样,保证 MySQL 数据库在遇到问题时能够自动重启,维持服务的可用性。

  • environment部分
    • - MYSQL_DATABASE=lsky - pro- MYSQL_USER=lsky - pro- MYSQL_PASSWORD=lsky - pro- MYSQL_ROOT_PASSWORD=lsky - pro:配置了 MySQL 数据库的相关参数,包括创建的数据库名、普通用户及其密码,以及 root 用户的密码。这些环境变量用于初始化 MySQL 数据库的设置,确保安全性和应用的正确连接。

  • volumes部分
    • -./data/db:/var/lib/mysql:将本地目录./data/db挂载到容器内的/var/lib/mysql目录,用于持久化存储 MySQL 的数据文件。这样即使容器被删除或重新创建,数据库中的数据仍然可以保留。

三、docker常用变量和容器常用环境变量

1、常用变量

1-1、Dockerfile中的变量

  • FROM
    • 说明:用于指定基础镜像,这是构建新镜像的起点。所有的 Docker 镜像都是从一个基础镜像构建而来的。例如,FROM ubuntu:latest表示新构建的镜像将基于最新版本的 Ubuntu 操作系统镜像。
    • 用途:通过选择合适的基础镜像,可以包含特定操作系统的环境和软件包,减少构建镜像的工作量。不同的应用程序可能需要不同的基础镜像,如基于 CentOS 的镜像用于企业级应用,基于 Alpine 的镜像用于构建小型、轻量级的容器。

  • RUN
    • 说明:用于在镜像构建过程中执行命令。这些命令可以是安装软件包、配置系统环境等操作。例如,RUN apt -y update && apt -y install nginx会在构建镜像时更新软件包列表并安装 Nginx 服务器。
    • 用途:在构建镜像阶段安装和配置应用程序及其依赖项。可以执行各种 shell 命令来设置镜像内部的环境,如安装数据库服务器(如RUN yum -y install mariadb -server用于在基于 CentOS 的镜像中安装 MariaDB)、编译源代码
    • 等操作。

  • CMD
    • 说明:用于指定容器启动时要执行的默认命令。例如,CMD ["nginx", "-g", "daemon off;"]表示当容器启动时,将执行 Nginx 服务器,并以前台模式运行(daemon off;是 Nginx 的一个参数,用于让 Nginx 在前台运行,这样容器才能保持运行状态)。
    • 用途:定义容器的主要运行任务。与RUN不同的是,CMD的命令是在容器启动时执行的,而RUN是在镜像构建阶段执行的。一个容器只能有一个CMD指令,如果在docker run命令行中指定了其他命令,那么会覆盖CMD中的命令。

  • ENTRYPOINT
    • 说明:类似于CMD,但它让容器以应用程序或者服务的形式运行。ENTRYPOINTCMD可以一起使用,CMD中的参数会作为ENTRYPOINT命令的参数。例如,ENTRYPOINT ["python", "app.py"]表示容器启动时将运行app.py这个 Python 应用程序。
    • 用途:设置容器启动的主程序,使得容器像一个可执行的程序一样运行。这种方式对于需要传递参数的应用程序很有用,比如在启动一个带有参数的数据库容器时,可以在ENTRYPOINT指定数据库服务器启动命令,在CMD中指定配置文件等参数。

  • EXPOSE
    • 说明:用于声明容器运行时监听的端口。例如,EXPOSE 80表示容器内的应用程序会监听 80 端口,但这并不意味着宿主机的 80 端口就会自动映射到容器的 80 端口,还需要在docker run命令中使用-p-P参数进行端口映射。
    • 用途:告知外界容器内的应用程序所使用的端口,方便在运行容器时进行正确的端口映射,从而使外部可以访问容器内的服务。例如,对于一个 Web 应用容器,通过EXPOSE声明其 Web 服务的端口,然后在部署时通过端口映射让外部用户可以通过浏览器访问该 Web 应用。

  • ENV
    • 说明:用于设置环境变量。例如,ENV MYSQL_ROOT_PASSWORD=123456可以在镜像构建过程和容器运行时设置 MySQL 的根密码环境变量。
    • 用途:方便在容器内部的应用程序读取配置信息,也可以用于在构建过程中传递参数。许多应用程序通过读取环境变量来获取配置信息,如数据库连接字符串、日志级别等。通过ENV设置这些变量可以让应用程序在不同的环境(如开发、测试、生产)中使用不同的配置。

  • VOLUME
    • 说明:用于创建挂载点,将容器内的目录挂载到宿主机或者其他存储设备上。例如,VOLUME ["/data"]会在容器内创建一个/data目录,这个目录可以被挂载到宿主机上的某个目录,方便数据的持久化存储和共享。
    • 用途:实现数据的持久化和共享。对于数据库容器,通过VOLUME将数据库的数据目录挂载到宿主机上,即使容器被删除,数据仍然可以保留。同时,也可以用于在多个容器之间共享数据,比如一个存储配置文件的容器可以通过VOLUME将配置文件目录共享给其他容器。

  • WORKDIR
    • 说明:用于设置容器内的工作目录。例如,WORKDIR /app表示容器内后续的命令(如RUNCMD等指令中的命令)将默认在/app目录下执行。
    • 用途:为容器内的操作提供一个统一的工作目录,方便管理文件和执行命令。比如在构建一个 Web 应用容器时,将WORKDIR设置为 Web 应用的代码目录,这样在安装依赖项、运行应用程序等操作时就可以在这个目录下进行。

1-2、docker run命令中的变量(部分)

  • -p-P(端口映射)
    • 说明:-p用于指定宿主机端口和容器端口的映射关系,格式为-p [宿主机端口]:[容器端口]。例如,-p 8080:80表示将宿主机的 8080 端口映射到容器的 80 端口,这样通过访问宿主机的 8080 端口就可以访问容器内监听 80 端口的服务。-P则是随机将容器内暴露的端口(通过EXPOSE声明)映射到宿主机的高端口。
    • 用途:实现容器内服务与外部网络的通信。这是在运行容器时非常重要的参数,用于将容器内运行的 Web 服务器、数据库服务器等服务的端口暴露给外部网络,使得外部用户或其他服务可以访问容器内的服务。

  • -v(卷挂载)
    • 说明:用于将宿主机的目录或文件挂载到容器内的目录,格式为-v [宿主机路径]:[容器内路径]。例如,-v /host/data:/container/data表示将宿主机的/host/data目录挂载到容器内的/container/data目录,这样容器内的应用程序就可以访问和操作宿主机上的文件,同时也可以实现数据的持久化存储。
    • 用途:和VOLUME指令配合,用于数据的持久化和共享。在运行容器时,可以将重要的数据目录(如数据库数据目录、应用程序配置文件目录)挂载到宿主机上,以防止容器删除或重新创建时数据丢失。同时,也可以用于在开发过程中,将本地代码目录挂载到容器内,方便调试和开发。

  • -e(环境变量设置)
    • 说明:用于在运行容器时设置环境变量,格式为-e [环境变量名]=[环境变量值]。例如,-e DEBUG=true可以在容器运行时设置一个名为DEBUG的环境变量,其值为true,容器内的应用程序可以读取这个环境变量来调整运行模式,如开启调试模式。
    • 用途:动态地设置容器内的环境变量,在不同的运行场景下(如测试环境和生产环境)可以通过-e参数传递不同的环境变量值,从而改变容器内应用程序的行为。这比在Dockerfile中使用ENV更加灵活,因为ENV是在构建镜像阶段就固定了环境变量的值。

  • --name(容器名称)
    • 说明:用于给运行的容器指定一个名称。例如,--name my_web_container会将运行的容器命名为my_web_container
    • 用途:方便对容器进行管理和引用。通过容器名称,可以更容易地识别容器的用途,并且在执行其他docker命令(如docker stopdocker startdocker logs等)时可以直接使用容器名称而不是容器 ID,使操作更加方便。

2、容器常用变量

HTTP_PROXY 和 HTTPS_PROXY

  • 说明:在企业网络环境或者需要通过代理服务器访问互联网的场景中,这两个环境变量用于设置 HTTP 和 HTTPS 协议的代理服务器地址。例如,HTTP_PROXY=http://proxy.example.com:8080HTTPS_PROXY=https://proxy.example.com:8080
  • 用途:当 Docker 在构建镜像(例如,使用RUN指令从互联网下载软件包)或者容器内的应用程序需要访问外部网络资源时,通过设置代理环境变量,可以使这些操作通过指定的代理服务器进行。这样可以满足企业网络安全策略或者解决网络访问限制的问题。

2-1、PATH

  • 说明:这是一个在操作系统中广泛使用的环境变量,用于指定命令的搜索路径。在 Docker 容器中,PATH环境变量定义了容器内系统在执行命令时查找可执行文件的目录列表。例如,在 Ubuntu 容器中,默认的PATH可能包含/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  • 用途:可以通过修改PATH环境变量来添加新的可执行文件目录。比如,当在容器内安装了一个新的软件,并且希望可以在任何目录下直接使用该软件的命令行工具时,就可以将该软件的安装目录添加到PATH中。例如,安装了一个自定义的脚本工具到/app/scripts目录,通过设置PATH=$PATH:/app/scripts,就可以在容器内的任何位置执行这个脚本工具。

2-2、JAVA_HOME

  • 说明:对于 Java 应用程序,JAVA_HOME环境变量指定了 Java 开发工具包(JDK)或者 Java 运行时环境(JRE)的安装目录。例如,JAVA_HOME=/usr/lib/jvm/java - 8 - openjdk - amd64
  • 用途:许多 Java 应用程序和工具(如 Maven、Tomcat 等)需要知道JAVA_HOME的位置来正确运行。在 Docker 容器中,当构建和运行 Java 应用时,正确设置JAVA_HOME可以确保这些应用能够找到 Java 相关的库和工具。例如,在构建一个基于 Java 的 Web 应用容器时,通过设置JAVA_HOME并将其添加到PATH环境变量(如PATH=$PATH:$JAVA_HOME/bin),可以方便地执行 Java 命令(如javajavac等)来启动和编译应用程序。

2-3、PYTHONPATH

  • 说明:对于 Python 应用程序,PYTHONPATH环境变量用于指定 Python 解释器查找模块的路径。例如,PYTHONPATH=/app/src:/app/libs表示 Python 解释器在查找模块时,除了默认的系统路径外,还会在/app/src/app/libs目录中查找。
  • 用途:在构建和运行 Python 容器应用时,通过设置PYTHONPATH,可以方便地组织 Python 代码的目录结构。例如,将应用程序的源代码目录和依赖的库目录添加到PYTHONPATH中,使得 Python 解释器能够正确地导入模块,从而确保应用程序能够顺利运行。

2-4、NODE_ENV

  • 说明:在 Node.js 应用程序中,NODE_ENV是一个常用的环境变量,用于指定应用程序的运行模式。通常可以设置为development(开发模式)、production(生产模式)或者test(测试模式)。例如,NODE_ENV=production
  • 用途:不同的运行模式下,Node.js 应用程序可能会有不同的行为。在开发模式下,可能会启用详细的日志记录和热重载等功能;在生产模式下,可能会对应用程序进行优化,如压缩代码、缓存资源等。通过设置NODE_ENV环境变量,应用程序可以根据其值来调整自身的配置和行为。
  1. Flask 简介

    • Flask 是一个轻量级的 Python Web 框架,使用 Python 语言编写。它被设计为简单而灵活,能够让开发者快速地构建 Web 应用程序,从简单的小型网站到复杂的大型 Web 应用都可以胜任。Flask 基于 WSGI(Web Server Gateway Interface)标准,这使得它可以很方便地与各种 Web 服务器(如 Gunicorn、uWSGI 等)配合使用。
  2. 核心特点

    • 简单易用
      • Flask 的 API 设计简洁明了,对于初学者来说很容易上手。它的核心概念,如路由(将 URL 映射到函数)、视图函数(处理请求并返回响应)等,都可以通过简单的代码实现。
  3. Flask 的主要组件
    • 应用实例(Flask对象)
      • 这是 Flask 应用的核心。通过Flask类创建应用实例,例如app = Flask(__name__)。这个实例包含了应用的配置信息、路由规则、请求上下文等。__name__参数用于确定应用的模块路径,Flask 会根据这个参数来查找模板、静态文件等资源。
    • 路由和视图函数
      • 路由是将 URL 路径与视图函数绑定的规则。视图函数是处理 HTTP 请求并返回响应的 Python 函数。如前面提到的@app.route('/')装饰器,用于将一个视图函数绑定到特定的 URL 路径。视图函数可以接收请求对象作为参数,并根据请求的内容和业务逻辑返回响应内容,响应可以是 HTML 文本、JSON 数据、文件等多种形式。
    • 模板引擎(通常是 Jinja2)
      • Flask 默认使用 Jinja2 作为模板引擎,用于将数据与 HTML 模板结合生成最终的页面。例如,在 Flask 应用中,可以创建一个名为index.html的模板文件,在视图函数中通过render_template函数将数据传递给模板并渲染。假设模板文件index.html中有一个变量{{message}},可以在视图函数中这样使用:

本文地址:https://www.vps345.com/4925.html

搜索文章

Tags

PV计算 带宽计算 流量带宽 服务器带宽 上行带宽 上行速率 什么是上行带宽? CC攻击 攻击怎么办 流量攻击 DDOS攻击 服务器被攻击怎么办 源IP 服务器 linux 运维 游戏 云计算 javascript 前端 chrome edge python MCP llama 算法 opencv 自然语言处理 神经网络 语言模型 ssh 进程 操作系统 进程控制 Ubuntu deepseek Ollama 模型联网 API CherryStudio 数据库 centos oracle 关系型 安全 分布式 harmonyos 华为 开发语言 typescript 计算机网络 ubuntu Dell R750XS 科技 ai java 人工智能 个人开发 udp unity 网络 网络协议 rust http fastapi mcp mcp-proxy mcp-inspector fastapi-mcp agent sse pycharm ide pytorch 笔记 C 环境变量 进程地址空间 numpy 阿里云 网络安全 adb nginx 监控 自动化运维 django flask web3.py github 创意 社区 RTSP xop RTP RTSPServer 推流 视频 flutter tcp/ip react.js 前端面试题 node.js 持续部署 macos c# c++ 深度优先 图论 并集查找 换根法 树上倍增 Docker Compose docker compose docker-compose ddos ollama llm 深度学习 机器学习 chatgpt 大模型 llama3 Chatglm 开源大模型 php android zotero WebDAV 同步失败 代理模式 ansible playbook YOLO vue.js audio vue音乐播放器 vue播放音频文件 Audio音频播放器自定义样式 播放暂停进度条音量调节快进快退 自定义audio覆盖默认样式 java-ee bash sql KingBase conda spring 银河麒麟 kylin v10 麒麟 v10 目标检测 计算机视觉 ESP32 LDAP spring boot websocket 后端 tomcat postman mock mock server 模拟服务器 mock服务器 Postman内置变量 Postman随机数据 maven intellij idea 腾讯云 nuxt3 vue3 docker 实时音视频 filezilla 无法连接服务器 连接被服务器拒绝 vsftpd 331/530 自动化 .netcore 容器 dubbo 运维开发 统信 国产操作系统 虚拟机安装 .net openEuler c语言 低代码 golang gitlab Qwen2.5-coder 离线部署 多线程服务器 Linux网络编程 android studio json html5 firefox pillow live555 rtsp rtp 蓝耘科技 元生代平台工作流 ComfyUI kubernetes 学习方法 经验分享 程序人生 vim vscode 代码调试 ipdb springsecurity6 oauth2 授权服务器 token sas 面试 性能优化 jdk intellij-idea 架构 DeepSeek-R1 API接口 Flask FastAPI Waitress Gunicorn uWSGI Uvicorn prometheus elasticsearch jenkins kvm 无桌面 命令行 串口服务器 Hyper-V WinRM TrustedHosts apache matlab YOLOv8 NPU Atlas800 A300I pro asi_bench AI 爬虫 数据集 windows 搜索引擎 Deepseek mount挂载磁盘 wrong fs type LVM挂载磁盘 Centos7.9 智能路由器 dell服务器 IIS .net core Hosting Bundle .NET Framework vs2022 rabbitmq es jvm html oceanbase rc.local 开机自启 systemd 麒麟 ecm bpm 音乐服务器 Navidrome 音流 transformer 编辑器 kylin 游戏服务器 Minecraft MNN DeepSeek Qwen 备份SQL Server数据库 数据库备份 傲梅企业备份网络版 web安全 大数据 cursor microsoft arm开发 TRAE excel 系统安全 媒体 微信 远程桌面 gaussdb ffmpeg 音视频 xss 宝塔面板访问不了 宝塔面板网站访问不了 宝塔面板怎么配置网站能访问 宝塔面板配置ip访问 宝塔面板配置域名访问教程 宝塔面板配置教程 jupyter pip H3C ESXi Dell HPE 联想 浪潮 AIGC AI编程 CPU 内存 主板 电源 网卡 pppoe radius ocr 命令 Linux PID mysql AI agent 硬件架构 系统架构 redis 思科模拟器 思科 Cisco 数据结构 学习 云服务 kind 开源 华为云 物联网 react next.js 部署 部署next.js QQ 聊天室 spring cloud 嵌入式硬件 单片机 温湿度数据上传到服务器 Arduino HTTP 云原生 ci/cd 其他 银河麒麟服务器操作系统 系统激活 远程工作 ceph googlecloud HarmonyOS Next eureka ssl https muduo X11 Xming 小程序 git 弹性计算 虚拟化 KVM 计算虚拟化 弹性裸金属 3d 数学建模 c 网络结构图 博客 游戏程序 stm32 qt windwos防火墙 defender防火墙 win防火墙白名单 防火墙白名单效果 防火墙只允许指定应用上网 防火墙允许指定上网其它禁止 express 7z 社交电子 输入法 av1 电视盒子 机顶盒ROM 魔百盒刷机 远程 执行 sshpass 操作 远程登录 telnet 1024程序员节 uni-app 漏洞 安全威胁分析 安装教程 GPU环境配置 Ubuntu22 CUDA PyTorch Anaconda安装 vscode 1.86 SSH 远程连接 p2p 信息与通信 ip k8s hugo WSL2 Netty 即时通信 NIO Samba SWAT 配置文件 服务管理 网络共享 监控k8s集群 集群内prometheus HTTP 服务器控制 ESP32 DeepSeek ruoyi 服务器繁忙 备选 网站 api 调用 示例 银河麒麟桌面操作系统 Kylin OS 国产化 JAVA Java DeepSeek行业应用 Heroku 网站部署 Cursor 5G 3GPP 卫星通信 YOLOv12 向日葵 rpc 边缘计算 智能硬件 AutoDL IIS服务器 IIS性能 日志监控 模拟退火算法 pygame 小游戏 五子棋 田俊楠 国标28181 视频监控 监控接入 语音广播 流程 SIP SDP MQTT mosquitto 消息队列 r语言 数据挖掘 数据可视化 数据分析 word图片自动上传 word一键转存 复制word图片 复制word图文 复制word公式 粘贴word图文 粘贴word公式 计算机 程序员 机器人 华为od sqlite TCP服务器 qt项目 qt项目实战 qt教程 openssl 密码学 list kamailio sip VoIP 根服务器 clickhouse 软件工程 数据库系统 EMQX 通信协议 kafka hibernate laravel AI大模型 大模型入门 大模型教程 webrtc remote-ssh sqlserver junit 僵尸进程 Linux ukui 麒麟kylinos openeuler W5500 OLED u8g2 微服务 chfs ubuntu 16.04 框架搭建 jar 宝塔面板 同步 备份 建站 VMware安装Ubuntu Ubuntu安装k8s mysql离线安装 ubuntu22.04 mysql8.0 火绒安全 Nuxt.js Xterminal 需求分析 规格说明书 豆瓣 追剧助手 迅雷 nas 微信小程序 前端框架 unity3d hive Hive环境搭建 hive3环境 Hive远程模式 springboot 缓存 雨云 NPS 飞书 孤岛惊魂4 uniapp vue aws 恒源云 tcp AD域 vSphere vCenter 软件定义数据中心 sddc flash-attention 报错 RTMP 应用层 反向代理 致远OA OA服务器 服务器磁盘扩容 okhttp CORS 跨域 oneapi 大模型微调 open webui 电脑 echarts 传统数据库升级 银行 大语言模型 LLMs Dify 单一职责原则 unix 服务器数据恢复 数据恢复 存储数据恢复 北亚数据恢复 oracle数据恢复 jmeter 软件测试 HCIE 数通 飞牛NAS 飞牛OS MacBook Pro 外网访问 内网穿透 端口映射 Headless Linux mongodb 软件需求 计算机外设 XCC Lenovo Ubuntu Server Ubuntu 22.04.5 asp.net大文件上传 asp.net大文件上传下载 asp.net大文件上传源码 ASP.NET断点续传 asp.net上传文件夹 asp.net上传大文件 .net core断点续传 华为认证 网络工程师 交换机 移动云 MS Materials gateway Clion Nova ResharperC++引擎 Centos7 远程开发 多进程 Reactor 设计模式 C++ shell embedding visualstudio gitee zookeeper ollama下载加速 debian SSL 域名 skynet 安全架构 AISphereButler tcpdump armbian u-boot LORA NLP Trae IDE AI 原生集成开发环境 Trae AI 企业微信 Linux24.04 deepin npm 驱动开发 硬件工程 嵌入式实习 WSL win11 无法解析服务器的名称或地址 Agent ftp pyqt 微信小程序域名配置 微信小程序服务器域名 微信小程序合法域名 小程序配置业务域名 微信小程序需要域名吗 微信小程序添加域名 gpu算力 EasyConnect Cline RustDesk自建服务器 rustdesk服务器 docker rustdesk 黑客技术 URL opensearch helm 服务器主板 AI芯片 ssrf 失效的访问控制 HTML audio 控件组件 vue3 audio音乐播放器 Audio标签自定义样式默认 vue3播放音频文件音效音乐 自定义audio播放器样式 播放暂停调整声音大小下载文件 MI300x 交互 openwrt ux 多线程 vscode1.86 1.86版本 ssh远程连接 SSE zabbix open Euler dde 统信UOS LLM Web APP Streamlit hadoop big data xrdp string模拟实现 深拷贝 浅拷贝 经典的string类问题 三个swap TrinityCore 魔兽世界 开发环境 SSL证书 sysctl.conf vm.nr_hugepages adobe Python 网络编程 聊天服务器 套接字 TCP 客户端 Socket asm svn ios FTP 服务器 崖山数据库 YashanDB 源码剖析 rtsp实现步骤 流媒体开发 Ubuntu 24.04.1 轻量级服务器 NFS redhat Linux awk awk函数 awk结构 awk内置变量 awk参数 awk脚本 awk详解 MacOS录屏软件 pdf 群晖 文件分享 VSCode 负载均衡 minio odoo 服务器动作 Server action 雨云服务器 raid5数据恢复 磁盘阵列数据恢复 银河麒麟操作系统 远程过程调用 Windows环境 firewalld 直播推流 服务器部署ai模型 rsyslog 高效日志打印 串口通信日志 服务器日志 系统状态监控日志 异常记录日志 毕设 FTP服务器 v10 镜像源 软件 医疗APP开发 app开发 微信公众平台 risc-v 中间件 C语言 ipython 三级等保 服务器审计日志备份 联想开天P90Z装win10 DigitalOcean GPU服务器购买 GPU服务器哪里有 GPU服务器 bootstrap virtualenv ecmascript nextjs reactjs 软考 权限 流式接口 网工 camera Arduino 电子信息 GaN HEMT 氮化镓 单粒子烧毁 辐射损伤 辐照效应 交叉编译 嵌入式 IDEA bonding 链路聚合 压力测试 tailscale derp derper 中转 windows日志 Unity Dedicated Server Host Client 无头主机 stm32项目 数据库架构 数据管理 数据治理 数据编织 数据虚拟化 idm 课程设计 MCP server C/S LLM fpga开发 能力提升 面试宝典 技术 IT信息化 agi arm iDRAC R720xd 命名管道 客户端与服务端通信 策略模式 单例模式 netty go 服务器无法访问 ip地址无法访问 无法访问宝塔面板 宝塔面板打不开 XFS xfs文件系统损坏 I_O error 磁盘监控 midjourney AI写作 mac 前后端分离 服务器配置 生物信息学 测试工具 mcu gitea FunASR ASR Docker Hub docker pull daemon.json 佛山戴尔服务器维修 佛山三水服务器维修 file server http server web server 集成学习 集成测试 selete 高级IO Invalid Host allowedHosts rdp 实验 Wi-Fi WebUI DeepSeek V3 Spring Security 黑客 UOS 统信操作系统 yum SysBench 基准测试 C++软件实战问题排查经验分享 0xfeeefeee 0xcdcdcdcd 动态库加载失败 程序启动失败 程序运行权限 标准用户权限与管理员权限 ISO镜像作为本地源 mybatis 微信分享 鸿蒙 Image wxopensdk 云电竞 云电脑 todesk 职场和发展 重启 排查 系统重启 日志 原因 硬件 设备 GPU PCI-Express minicom 串口调试工具 矩阵 线性代数 电商平台 RAGFlow cd 目录切换 gcc Erlang OTP gen_server 热代码交换 事务语义 信号 ui Xinference glibc 智能手机 小艺 Pura X 远程控制 rustdesk 双系统 apt 国内源 llama.cpp dns是什么 如何设置电脑dns dns应该如何设置 nac 802.1 portal 在线预览 xlsx xls文件 在浏览器直接打开解析xls表格 前端实现vue3打开excel 文件地址url或接口文档流二进 tensorflow MacMini Mac 迷你主机 mini Apple 图像处理 信号处理 宠物 毕业设计 免费学习 宠物领养 宠物平台 ubuntu24 vivado24 freebsd xpath定位元素 Unity插件 k8s集群资源管理 云原生开发 iventoy VmWare OpenEuler RAGFLOW LInux Open WebUI 测试用例 功能测试 .net mvc断点续传 怎么卸载MySQL MySQL怎么卸载干净 MySQL卸载重新安装教程 MySQL5.7卸载 Linux卸载MySQL8.0 如何卸载MySQL教程 MySQL卸载与安装 AI作画 wsl selenium lsb_release /etc/issue /proc/version uname -r 查看ubuntu版本 VR手套 数据手套 动捕手套 动捕数据手套 RoboVLM 通用机器人策略 VLA设计哲学 vlm fot robot 视觉语言动作模型 具身智能 visual studio code 端口测试 ros2 moveit 机器人运动 Ubuntu 24 常用命令 Ubuntu 24 Ubuntu vi 异常处理 剧本 GCC Linux环境 烟花代码 烟花 元旦 强化学习 个人博客 rtsp服务器 rtsp server android rtsp服务 安卓rtsp服务器 移动端rtsp服务 大牛直播SDK 大模型面经 大模型学习 edge浏览器 n8n dity make 王者荣耀 dify 深度求索 私域 知识库 工业4.0 高效远程协作 TrustViewer体验 跨设备操作便利 智能远程控制 实习 Linux无人智慧超市 LInux多线程服务器 QT项目 LInux项目 单片机项目 sonoma 自动更新 grafana 微信开放平台 微信公众号配置 IPMI 蓝桥杯 rime 腾讯云大模型知识引擎 游戏开发 SEO hexo Jellyfin 自动驾驶 流水线 脚本式流水线 显示管理器 lightdm gdm devops 阻塞队列 生产者消费者模型 服务器崩坏原因 网站搭建 serv00 jetty undertow keepalived 鸿蒙系统 arkUI NAS Termux firewall 超融合 云服务器 裸金属服务器 弹性裸金属服务器 chrome devtools chromedriver 金仓数据库 2025 征文 数据库平替用金仓 游戏引擎 抗锯齿 xcode HarmonyOS ArcTS 登录 ArcUI GridItem 合成模型 扩散模型 图像生成 序列化反序列化 无人机 鲲鹏 昇腾 npu 毕昇JDK gpt 游戏机 micropython esp32 mqtt 智能音箱 智能家居 语法 vasp安装 rclone AList webdav fnOS 查询数据库服务IP地址 SQL Server 语音识别 半虚拟化 硬件虚拟化 Hypervisor DevEco Studio OpenHarmony 真机调试 虚拟局域网 系统 黑苹果 虚拟机 VMware 网络攻击模型 sdkman code-server sequoiaDB SVN Server tortoise svn postgresql dba 算力 政务 分布式系统 监控运维 Prometheus Grafana 捆绑 链接 谷歌浏览器 youtube google gmail Python基础 Python教程 Python技巧 matplotlib Radius proxy模式 图形渲染 pgpool 本地知识库部署 DeepSeek R1 模型 业界资讯 cuda cudnn nvidia gpt-3 文心一言 环境配置 ABAP prometheus数据采集 prometheus数据模型 prometheus特点 IM即时通讯 剪切板对通 HTML FORMAT 相机 Claude 银河麒麟高级服务器 外接硬盘 Kylin 物联网开发 eNSP 网络规划 VLAN 企业网络 显卡驱动 AnythingLLM AnythingLLM安装 outlook safari Kali alias unalias 别名 历史版本 下载 安装 HAProxy Java Applet URL操作 服务器建立 Socket编程 网络文件读取 直流充电桩 充电桩 混合开发 环境安装 JDK 主从复制 regedit 开机启动 rust腐蚀 阿里云ECS 网络用户购物行为分析可视化平台 大数据毕业设计 k8s资源监控 annotations自动化 自动化监控 监控service 监控jvm 源码 做raid 装系统 BMC 实战案例 iot webgl can 线程池 VPS ip命令 新增网卡 新增IP 启动网卡 图形化界面 centos-root /dev/mapper yum clean all df -h / du -sh 考研 onlyoffice 在线office ruby bug IMX317 MIPI H265 VCU 虚幻 京东云 线程 基础入门 编程 web 网络穿透 linux上传下载 QT 5.12.12 QT开发环境 Ubuntu18.04 健康医疗 互联网医院 GRUB引导 Linux技巧 dns docker搭建nacos详解 docker部署nacos docker安装nacos 腾讯云搭建nacos centos7搭建nacos fd 文件描述符 springboot远程调试 java项目远程debug docker远程debug java项目远程调试 springboot远程 USB网络共享 Google pay Apple pay autodl Playwright 自动化测试 ssh远程登录 文件系统 用户缓冲区 模拟实现 P2P HDLC OD机试真题 华为OD机试真题 服务器能耗统计 css less chrome 浏览器下载 chrome 下载安装 谷歌浏览器下载 私有化 本地部署 uv cocoapods threejs 3D 浏览器开发 AI浏览器 ssh漏洞 ssh9.9p2 CVE-2025-23419 技能大赛 SenseVoice epoll 程序 性能分析 vmware 卡死 RAID RAID技术 磁盘 存储 MySql opcua opcda KEPServer安装 移动魔百盒 AI代码编辑器 USB转串口 CH340 etl harmonyOS面试题 wps 安卓 cnn 邮件APP 免费软件 yaml Ultralytics 可视化 db yolov8 繁忙 解决办法 替代网站 汇总推荐 AI推理 CDN 自定义客户端 SAS Windsurf 大数据平台 linux安装配置 rocketmq wsgiref Web 服务器网关接口 flink nfs 信息可视化 网页设计 rnn 华为机试 OpenSSH java-rocketmq jina ardunio BLE etcd 数据安全 RBAC wireshark linux驱动开发 webstorm 视觉检测 frp GIS 遥感 WebGIS Docker引擎已经停止 Docker无法使用 WSL进度一直是0 镜像加速地址 wordpress 无法访问wordpess后台 打开网站页面错乱 linux宝塔面板 wordpress更换服务器 Windows 链表 perf 金融 trea idea seatunnel deepseek r1 大大通 第三代半导体 碳化硅 回显服务器 UDP的API使用 ai工具 项目部署到linux服务器 项目部署过程 composer 升级 CVE-2024-7347 make命令 makefile文件 rag ragflow ragflow 源码启动 产测工具框架 IMX6ULL 管理框架 Kylin-Server 服务器安装 iperf3 带宽测试 gradle Kali Linux 渗透测试 信息收集 Linux的基础指令 h.264 iphone 企业网络规划 华为eNSP ue4 着色器 ue5 iftop 网络流量监控 开发 KylinV10 麒麟操作系统 Vmware anaconda milvus mamba Vmamba WebRTC web3 镜像 elk Logstash 日志采集 网卡的名称修改 eth0 ens33 cpp-httplib 键盘 EtherCAT转Modbus ECT转Modbus协议 EtherCAT转485网关 ECT转Modbus串口网关 EtherCAT转485协议 ECT转Modbus网关 IMM iBMC UltraISO navicat 路径解析 代理服务器 ROS lio-sam SLAM IPMITOOL 硬件管理 HiCar CarLife+ CarPlay QT RK3588 环境迁移 实时互动 Node-Red 编程工具 流编程 VMware创建虚拟机 视频编解码 音乐库 飞牛 实用教程 python3.11 dash 正则表达式 ubuntu24.04.1 tidb GLIBC prompt iis 可信计算技术 工作流 workflow 僵尸世界大战 游戏服务器搭建 远程看看 远程协助 知识图谱 串口驱动 CH341 uart 485 sqlite3 Anolis nginx安装 linux插件下载 cpu 实时 使用 bat RAG 检索增强生成 文档解析 大模型垂直应用 端口 查看 ss Typore ldap IPv4 子网掩码 公网IP 私有IP 影刀 #影刀RPA# SSH 密钥生成 SSH 公钥 私钥 生成 bcompare Beyond Compare 模拟器 教程 linux 命令 sed 命令 ShenTong 架构与原理 自动化任务管理 开机自启动 easyui langchain 多个客户端访问 IO多路复用 TCP相关API mariadb 压测 ECS yum源切换 更换国内yum源 springcloud 宕机切换 服务器宕机 Linux find grep 代理 EMUI 回退 降级 大文件分片上传断点续传及进度条 如何批量上传超大文件并显示进度 axios大文件切片上传详细教 node服务器合并切片 vue3大文件上传报错提示错误 大文件秒传跨域报错cors 中兴光猫 换光猫 网络桥接 自己换光猫 DOIT 四博智联 ArkUI 多端开发 智慧分发 应用生态 鸿蒙OS 防火墙 NAT转发 NAT Server aarch64 编译安装 HPC GoogLeNet vr lua PVE 常用命令 文本命令 目录命令 AI-native Docker Desktop 树莓派 VNC win服务器架设 windows server thingsboard 迁移指南 域名服务 DHCP 符号链接 配置 mq 性能测试 单元测试 css3 sentinel 元服务 应用上架 换源 Debian 办公自动化 自动化生成 pdf教程 相差8小时 UTC 时间 状态管理的 UDP 服务器 Arduino RTOS 服务器管理 配置教程 网站管理 crosstool-ng arcgis xml Ubuntu DeepSeek DeepSeek Ubuntu DeepSeek 本地部署 DeepSeek 知识库 DeepSeek 私有化知识库 本地部署 DeepSeek DeepSeek 私有化部署 wsl2 Ark-TS语言 状态模式 trae g++ g++13 pyautogui 多层架构 解耦 cmos 我的世界服务器搭建 加解密 Yakit yaklang linux环境变量 软链接 硬链接 干货分享 黑客工具 密码爆破 deekseek SSH 服务 SSH Server OpenSSH Server 技术共享 我的世界 我的世界联机 数码 流量运营 CrewAI log4j 小智AI服务端 xiaozhi TTS AD 域管理 ros eclipse bot Docker efficientVIT YOLOv8替换主干网络 TOLOv8 带外管理 执法记录仪 智能安全帽 smarteye DenseNet 分析解读 VMware安装mocOS macOS系统安装 ping++ 风扇控制软件 visual studio Ubuntu共享文件夹 共享目录 Linux共享文件夹 增强现实 沉浸式体验 应用场景 技术实现 案例分析 AR 上传视频至服务器代码 vue3批量上传多个视频并预览 如何实现将本地视频上传到网页 element plu视频上传 ant design vue vue3本地上传视频及预览移除 虚幻引擎 DocFlow neo4j 本地部署AI大模型 论文阅读 自动化编程 uni-file-picker 拍摄从相册选择 uni.uploadFile H5上传图片 微信小程序上传图片 deep learning 程序员创富 热榜 VS Code 网络建设与运维 网络搭建 神州数码 神州数码云平台 云平台 CentOS Stream CentOS grub 版本升级 扩容 searxng 网络药理学 生信 PPI String Cytoscape CytoHubba 车载系统 xshell termius iterm2 数据仓库 数据库开发 database TrueLicense 匿名管道 服务网格 istio js 磁盘镜像 服务器镜像 服务器实时复制 实时文件备份 大模型推理 Redis Desktop docker命令大全 nlp minecraft 鸿蒙开发 移动开发 docker run 数据卷挂载 交互模式 聚类 分布式训练 西门子PLC 通讯 MVS 海康威视相机 ai小智 语音助手 ai小智配网 ai小智教程 esp32语音助手 diy语音助手 EtherNet/IP串口网关 EIP转RS485 EIP转Modbus EtherNet/IP网关协议 EIP转RS485网关 EIP串口服务器 dock 加速 IO模型 ubuntu20.04 开机黑屏 存储维护 NetApp存储 EMC存储 人工智能生成内容 基础环境 多路转接 本地化部署 docker搭建pg docker搭建pgsql pg授权 postgresql使用 postgresql搭建 内网服务器 内网代理 内网通信 VM搭建win2012 win2012应急响应靶机搭建 攻击者获取服务器权限 上传wakaung病毒 应急响应并溯源 挖矿病毒处置 应急响应综合性靶场 openstack Xen 沙盒 word 拓扑图 PX4 玩机技巧 软件分享 软件图标 项目部署 spark HistoryServer Spark YARN jobhistory wpf 渗透 信创 信创终端 中科方德 离线部署dify Cookie DBeaver kerberos 粘包问题 C# MQTTS 双向认证 emqx seleium 目标跟踪 OpenVINO 推理应用 TCP协议 嵌入式系统开发 SRS 流媒体 直播 系统开发 binder framework 源码环境 CLion Attention 软负载 远程服务 AI Agent 字节智能运维 搭建个人相关服务器 conda配置 conda镜像源 IO fast curl wget 大模型应用 大模型部署 docker部署翻译组件 docker部署deepl docker搭建deepl java对接deepl 翻译组件使用 swoole AP配网 AK配网 小程序AP配网和AK配网教程 WIFI设备配网小程序UDP开 rpa 内网环境 Qwen2.5-VL vllm kali 共享文件夹 嵌入式Linux IPC 飞牛nas fnos gnu figma triton 模型分析 vue-i18n 国际化多语言 vue2中英文切换详细教程 如何动态加载i18n语言包 把语言json放到服务器调用 前端调用api获取语言配置文件 Deepseek-R1 私有化部署 推理模型 欧标 OCPP 灵办AI x64 SIGSEGV xmm0 mm-wiki搭建 linux搭建mm-wiki mm-wiki搭建与使用 mm-wiki使用 mm-wiki详解 李心怡 Linux的权限 产品经理 MDK 嵌入式开发工具 论文笔记 sublime text docker部署Python hosts 运维监控 DNS UOS1070e UDP 服务器时间 qemu libvirt 网络爬虫 leetcode 推荐算法