Docker 常用命令基础详解(二)

news2025/2/19 13:38:40

四、容器操作命令

4.1 运行容器

使用docker run命令可以创建并运行一个容器,它就像是一个神奇的 “启动器”,让镜像中的应用程序在容器中运行起来。其基本语法为:

 

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

其中,OPTIONS是可选参数,IMAGE是要使用的镜像名称,COMMAND是在容器启动时要执行的命令,ARG...是命令的参数。常见的参数有:

  • -d:以守护进程(后台)模式运行容器,容器启动后会在后台运行,不会占用当前终端。就像你启动了一个后台服务,它在后台默默地运行,不会干扰你在终端进行其他操作。
  • -it:以交互模式运行容器,通常与-t一起使用。-i表示保持标准输入流打开,-t表示为容器分配一个伪终端,这样我们就可以在容器内进行交互式操作,就像直接在容器内部的终端中操作一样。
  • -p:指定端口映射,格式为宿主机端口:容器端口。例如,-p 8080:80表示将容器的 80 端口映射到宿主机的 8080 端口,这样我们就可以通过访问宿主机的 8080 端口来访问容器内的应用程序。这就好比你在一个大房子里(宿主机),为一个小房间(容器)开了一扇特殊的门(端口映射),通过这扇门可以直接进入小房间。
  • -v:指定卷挂载,格式为宿主机路径:容器路径。通过卷挂载,我们可以将宿主机的目录或文件挂载到容器内,实现数据的共享和持久化。比如,-v /data:/app/data表示将宿主机的/data目录挂载到容器的/app/data目录,这样在容器内对/app/data目录的操作就会同步到宿主机的/data目录。这就像是在两个房间之间打通了一条通道,两边的物品可以互相流通。
  • --name:为容器指定一个名称,方便我们识别和管理容器。如果不指定名称,Docker 会自动生成一个随机的名称。指定一个有意义的名称就像给一个人取了一个容易记住的名字,方便我们在众多容器中找到它。

例如,要以交互模式运行一个基于 ubuntu 镜像的容器,并在容器内执行bash命令,进入容器的交互式终端,可以执行:

 

docker run -it ubuntu bash

如果要以后台模式运行一个 nginx 容器,并将容器的 80 端口映射到宿主机的 8080 端口,可以执行:

 

docker run -d -p 8080:80 nginx

4.2 列出容器

查看正在运行的容器,我们使用docker ps命令,它就像是一个 “容器清单查看器”,将正在运行的容器信息展示出来。其基本语法为:

 

docker ps [OPTIONS]

其中,OPTIONS是可选参数。常见的参数有:

  • -a:显示所有容器,包括未运行的容器。默认情况下,docker ps只显示正在运行的容器,使用-a参数可以查看所有容器的历史记录,就像查看一个班级所有学生的出勤记录,包括请假(未运行)的学生。
  • -q:仅显示容器的 ID,简洁明了,适合在需要快速获取容器 ID 的场景中使用,比如在批量操作容器时。
  • -n=INTEGER:显示最近创建的INTEGER个容器,例如docker ps -n 5会显示最近创建的 5 个容器,方便我们查看最新创建的容器情况。
  • -f:根据指定条件过滤结果。例如,docker ps -f "status=exited"可以筛选出状态为已退出的容器,就像在一个大仓库里筛选出特定状态的货物。

执行docker ps命令后,会看到一个类似如下的表格:

 

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

7d9e6c8d8d8c nginx:latest "/docker-entrypoint.…" 10 minutes ago Up 10 minutes 0.0.0.0:8080->80/tcp mynginx

表格中的各列含义如下:

  • CONTAINER ID:容器的唯一标识,类似于人的身份证号码,通过它可以准确地识别和操作容器。
  • IMAGE:容器使用的镜像名称,表明这个容器是基于哪个镜像创建的。
  • COMMAND:容器启动时运行的命令,让我们了解容器启动后执行的具体操作。
  • CREATED:容器的创建时间,记录了容器是什么时候被创建的。
  • STATUS:容器的状态,常见的状态有running(运行中)、exited(已退出)、paused(暂停)等。
  • PORTS:容器的端口映射信息,显示了容器内部端口与宿主机端口的映射关系。
  • NAMES:容器的名称,如果在创建容器时指定了名称,这里就会显示指定的名称;否则,会显示一个自动生成的名称。

4.3 启动、停止与重启容器

  • 启动容器:对于已经停止的容器,我们可以使用docker start命令来启动它,就像重新启动一台暂停的机器。其基本语法为:
 

docker start [OPTIONS] CONTAINER [CONTAINER...]

其中,OPTIONS是可选参数,CONTAINER是要启动的容器的 ID 或名称,可以同时指定多个容器。例如,要启动名为mynginx的容器,可以执行:

 

docker start mynginx

  • 停止容器:使用docker stop命令可以停止正在运行的容器,它会向容器发送一个SIGTERM信号,允许容器优雅地停止。如果容器在一段时间内没有停止,它会接收到一个SIGKILL信号强制停止。其基本语法为:
 

docker stop [OPTIONS] CONTAINER [CONTAINER...]

同样,OPTIONS是可选参数,CONTAINER是要停止的容器的 ID 或名称。例如,要停止 ID 为7d9e6c8d8d8c的容器,可以执行:

 

docker stop 7d9e6c8d8d8c

我们还可以在停止时指定一个等待时间,单位是秒,默认是 10 秒。例如,docker stop -t 20 7d9e6c8d8d8c表示等待 20 秒让容器停止,如果 20 秒后容器仍未停止,才会发送SIGKILL信号强制停止。

  • 重启容器:docker restart命令会先停止容器,然后立即重新启动它,就像给一台电脑进行重启操作。其基本语法为:
 

docker restart [OPTIONS] CONTAINER [CONTAINER...]

OPTIONS是可选参数,CONTAINER是要重启的容器的 ID 或名称。例如,要重启名为mynginx的容器,可以执行:

 

docker restart mynginx

也可以指定重启的等待时间,使用-t选项来指定停止容器时的超时时间。例如,docker restart -t 20 mynginx表示在重启mynginx容器时,先停止容器并等待 20 秒,如果 20 秒内容器停止了,就立即重新启动;如果 20 秒后容器仍未停止,才会强制停止并重新启动。

4.4 进入容器

当我们需要在容器内部执行一些操作,如查看文件、调试程序等,就需要进入正在运行的容器。常用的有docker exec和docker attach命令。

  • 使用docker exec命令:这是最常用的进入容器并执行命令的方式,它允许我们在运行中的容器内执行一个新的命令,就像在一个正在运行的房间里(容器)执行新的任务。其基本语法为:
 

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

其中,OPTIONS是可选参数,CONTAINER是容器的 ID 或名称,COMMAND是要在容器内执行的命令,ARG...是命令的参数。常见的参数有:

  • -it:以交互模式运行命令,为容器重新分配一个伪输入终端,这样我们就可以在容器内进行交互式操作,就像直接在容器内部的终端中操作一样。例如,要进入名为mynginx的容器的交互式Bash shell,可以执行:
 

docker exec -it mynginx /bin/bash

如果容器中没有Bash,可以尝试/bin/sh。我们还可以在容器内直接执行命令(不进入shell)。例如,查看容器内的/var/log目录内容,可以执行:

 

docker exec mynginx ls /var/log

  • 使用docker attach命令:这个命令用于连接到一个正在运行的容器的主进程(通常是容器启动时运行的进程),就像直接连接到一个正在运行的机器的核心部分。但要注意,这种方式并不像docker exec那样启动一个新的shell,而是附加到容器的主进程,通常用于查看容器的输出日志。其示例如下:
 

docker attach mynginx

如果你使用docker attach并尝试退出,可能会终止容器的主进程。因此,如果只是想查看输出而不关闭容器,请谨慎使用。例如,当你使用docker attach进入容器后,按下Ctrl + C可能会直接停止容器的主进程,导致容器停止运行。

4.5 删除容器

当我们不再需要某个容器时,可以使用docker rm命令将其删除,它就像是一个 “容器清理器”,帮助我们释放资源,保持系统整洁。其基本语法为:

 

docker rm [OPTIONS] CONTAINER [CONTAINER...]

其中,OPTIONS是可选参数,CONTAINER是要删除的容器的 ID 或名称,可以同时指定多个容器。常见的参数有:

  • -f:强制删除容器,即使该容器正在运行。当容器正在运行时,如果直接使用docker rm命令删除会报错,因为容器正在使用中。使用-f参数可以强制删除,但要注意,强制删除可能会导致数据丢失或其他未预期的问题,就像在一个人正在使用某个工具时强行夺走这个工具,可能会影响工作进度或造成工具损坏。例如,要强制删除名为mynginx的正在运行的容器,可以执行:
 

docker rm -f mynginx

  • -l:移除容器间的网络连接,而非容器本身。有时候我们只是想断开容器之间的网络连接,而不是删除容器,这时就可以使用这个参数。
  • -v:删除与容器关联的卷。如果容器在运行时挂载了卷,使用这个参数可以在删除容器时同时删除这些卷,避免残留无用的卷占用空间。

要删除一个已经停止的容器,例如名为mycontainer的容器,可以执行:

 

docker rm mycontainer

如果要删除所有停止的容器,可以使用以下命令:

 

docker container prune

这个命令会清理所有已停止的容器,并且在执行前会要求用户确认。若要自动确认,可以添加-f或--force参数:

 

docker container prune -f

如果想要一次性删除所有容器(无论是否运行),可以使用以下命令:

 

docker rm -f $(docker ps -aq)

这条命令首先通过docker ps -aq获取所有容器(包括运行中的)的 ID 列表,然后传递给docker rm -f命令进行强制删除。在执行删除所有容器的命令时要特别小心,确保确实不再需要这些容器,以免误删重要的容器和数据。

4.6 查看容器日志

使用docker logs命令可以查看容器的运行日志,这些日志就像是容器运行的 “日记”,记录了容器运行过程中的各种信息,对于调试和排查问题非常有帮助。其基本语法为:

 

docker logs [OPTIONS] CONTAINER

其中,OPTIONS是可选参数,CONTAINER是要查看日志的容器的 ID 或名称。常见的参数有:

  • -f:实时跟踪日志输出,就像实时观看一场比赛的直播,随时了解最新的动态。使用这个参数后,命令会持续输出容器的最新日志,方便我们实时监控容器的运行状态。例如,要实时跟踪名为mynginx的容器的日志输出,可以执行:
 

docker logs -f mynginx

  • --tail:指定输出日志的行数,例如--tail 10表示只输出最后 10 行日志,让我们可以快速查看最近的日志信息。这就像在一本厚厚的日记中,只查看最后几页的内容。
  • --since:指定开始查看日志的时间,格式为YYYY - MM - DD HH:MM:SS,例如--since "2024-11-20 10:00:00"表示从 2024 年 11 月 20 日 10 点开始查看日志,帮助我们精准定位某个时间段内的日志。
  • --until:指定结束查看日志的时间,格式与--since相同,例如--until "2024-11-20 12:00:00"表示查看日志到 2024 年 11 月 20 日 12 点结束。

例如,要查看名为mynginx的容器的最后 50 行日志,可以执行:

 

docker logs --tail 50 mynginx

如果要查看从 2024 年 11 月 20 日 10 点到 12 点之间的日志,可以执行:

 

docker logs --since "2024-11-20 10:00:00" --until "2024-11-20 12:00:00" mynginx

五、数据卷与网络命令

5.1 数据卷管理

在 Docker 的世界里,数据卷就像是一个坚固的 “数据保险箱”,为容器的数据提供了持久化存储和共享的能力。它打破了容器生命周期的限制,即使容器被删除,数据卷中的数据依然得以保留。这就好比你有一个特别的文件柜,无论你的办公室(容器)如何变化,文件柜里的文件(数据)都安全无损。

创建数据卷

使用docker volume create命令可以创建一个新的数据卷,其基本语法为:

 

docker volume create [OPTIONS] VOLUME

其中,OPTIONS是可选参数,VOLUME是数据卷的名称。例如,要创建一个名为myvolume的数据卷,可以执行:

 

docker volume create myvolume

创建成功后,Docker 会在宿主机的默认数据卷存储目录(通常是/var/lib/docker/volumes/)下创建一个以数据卷名称命名的目录,用于存储数据卷的数据。

查看数据卷

查看所有数据卷,我们使用docker volume ls命令,它会列出所有已创建的数据卷及其相关信息,就像一个 “数据卷清单”。执行该命令后,会看到类似如下的输出:

 

DRIVER VOLUME NAME

local myvolume

如果想查看某个具体数据卷的详细信息,比如myvolume的数据卷,可以使用docker volume inspect命令,其语法为:

 

docker volume inspect [OPTIONS] VOLUME [VOLUME...]

执行docker volume inspect myvolume后,会得到一个详细的 JSON 格式的输出,包含数据卷的名称、驱动、挂载点等信息。例如:

 

[

{

"CreatedAt": "2024-11-20T10:00:00Z",

"Driver": "local",

"Labels": {},

"Mountpoint": "/var/lib/docker/volumes/myvolume/_data",

"Name": "myvolume",

"Options": {},

"Scope": "local"

}

]

从输出中可以看到,Mountpoint字段显示了数据卷在宿主机上的实际挂载路径,通过这个路径,我们可以直接在宿主机上访问和管理数据卷中的数据。

删除数据卷

当我们不再需要某个数据卷时,可以使用docker volume rm命令将其删除,其基本语法为:

 

docker volume rm [OPTIONS] VOLUME [VOLUME...]

例如,要删除名为myvolume的数据卷,可以执行:

 

docker volume rm myvolume

需要注意的是,在删除数据卷之前,必须确保该数据卷没有被任何容器挂载使用,否则删除操作会失败。如果数据卷正在被容器使用,你需要先停止相关容器,或者使用docker run --rm命令启动一个临时容器,将数据卷从临时容器中卸载后再进行删除。此外,还可以使用docker volume prune命令删除所有未使用的数据卷,以释放磁盘空间。执行该命令时,会提示确认是否删除,输入y即可确认删除。这就像是清理仓库里长期不用的货物,释放宝贵的空间。

5.2 网络管理

在 Docker 的网络世界中,容器之间的通信以及与外部世界的交互都依赖于精心构建的网络架构。通过一系列强大的网络管理命令,我们可以像搭建一座复杂的通信桥梁一样,灵活地创建、配置和管理 Docker 网络,让容器之间能够顺畅地 “交流”。

创建网络

使用docker network create命令可以创建一个自定义的 Docker 网络,其基本语法为:

 

docker network create [OPTIONS] NETWORK

其中,OPTIONS是可选参数,NETWORK是网络的名称。常见的参数有:

  • --driver:指定网络驱动类型,常用的驱动有bridge(桥接网络,适用于单个主机上的容器通信)、overlay(覆盖网络,适用于跨多个 Docker 主机的容器通信,常用于 Swarm 集群)等。
  • --subnet:指定自定义子网,用于为容器分配 IP 地址。
  • --gateway:为网络指定网关。

例如,要创建一个名为mybridge的桥接网络,可以执行:

 

docker network create --driver bridge mybridge

如果要创建一个自定义子网和网关的桥接网络,可以执行:

 

docker network create --driver bridge --subnet 172.18.0.0/16 --gateway 172.18.0.1 mybridge

创建好网络后,就可以将容器连接到这个网络中,实现容器之间的通信。

查看网络

查看所有 Docker 网络,我们使用docker network ls命令,它会列出所有已创建的网络及其相关信息,就像一个 “网络清单查看器”。执行该命令后,会看到类似如下的输出:

 

NETWORK ID NAME DRIVER SCOPE

1234567890ab mybridge bridge local

abcdef012345 bridge bridge local

从输出中可以看到每个网络的 ID、名称、驱动类型和作用范围。如果想查看某个具体网络的详细信息,比如mybridge网络,可以使用docker network inspect命令,其语法为:

 

docker network inspect [OPTIONS] NETWORK [NETWORK...]

执行docker network inspect mybridge后,会得到一个详细的 JSON 格式的输出,包含网络的 ID、名称、驱动、子网配置、连接的容器等信息。例如:

 

[

{

"Name": "mybridge",

"Id": "1234567890ab",

"Created": "2024-11-20T10:00:00Z",

"Scope": "local",

"Driver": "bridge",

"EnableIPv6": false,

"IPAM": {

"Driver": "default",

"Options": {},

"Config": [

{

"Subnet": "172.18.0.0/16",

"Gateway": "172.18.0.1"

}

]

},

"Internal": false,

"Attachable": false,

"Ingress": false,

"ConfigFrom": {

"Network": ""

},

"ConfigOnly": false,

"Containers": {},

"Options": {},

"Labels": {}

}

]

通过查看这些详细信息,我们可以了解网络的配置情况,以及哪些容器连接到了这个网络。

连接与断开网络

将容器连接到指定网络,我们使用docker network connect命令,其基本语法为:

 

docker network connect [OPTIONS] NETWORK CONTAINER

其中,NETWORK是网络的名称或 ID,CONTAINER是容器的名称或 ID。例如,要将名为mycontainer的容器连接到mybridge网络,可以执行:

 

docker network connect mybridge mycontainer

连接成功后,容器就可以与该网络中的其他容器进行通信了。

如果要将容器从网络中断开,使用docker network disconnect命令,其基本语法为:

 

docker network disconnect [OPTIONS] NETWORK CONTAINER

例如,要将mycontainer容器从mybridge网络中断开,可以执行:

 

docker network disconnect mybridge mycontainer

断开连接后,容器将无法再与该网络中的其他容器进行通信。需要注意的是,对于一些特殊的网络类型(如host网络),容器一旦连接到该网络,就不能断开连接。

六、综合实战与总结

6.1 实战案例

为了更直观地展示 Docker 常用命令的实际应用,我们以部署一个基于 Flask 框架的简单 Web 应用为例。假设我们已经开发好了一个 Flask 应用,代码如下:

 

from flask import Flask

app = Flask(__name__)

@app.route('/')

def hello_world():

return 'Hello, Docker!'

if __name__ == '__main__':

app.run(host='0.0.0.0', port=5000)

将上述代码保存为app.py,并在同一目录下创建一个requirements.txt文件,用于记录项目的依赖:

 

Flask

接下来,我们使用 Docker 来部署这个 Web 应用。

步骤一:创建 Dockerfile

在项目目录下创建一个名为Dockerfile的文件,内容如下:

 

# 使用Python官方镜像作为基础镜像

FROM python:3.9-slim

# 设置工作目录

WORKDIR /app

# 将项目依赖文件复制到容器内

COPY requirements.txt.

# 安装项目依赖

RUN pip install -r requirements.txt

# 将项目代码复制到容器内

COPY.

# 暴露容器的5000端口

EXPOSE 5000

# 定义容器启动时执行的命令

CMD ["python", "app.py"]

步骤二:构建镜像

在项目目录下打开终端,执行以下命令构建 Docker 镜像:

 

docker build -t flask - app.

这里的-t参数用于指定镜像的标签,flask - app是我们给镜像取的名字,最后的.表示当前目录,即 Dockerfile 所在的目录。构建过程中,Docker 会根据 Dockerfile 中的指令逐步构建镜像,你会看到一系列的输出信息,显示构建的进度和状态。

步骤三:运行容器

镜像构建完成后,我们可以使用以下命令运行容器:

 

docker run -d -p 8080:5000 flask - app

-d参数表示在后台运行容器,-p参数用于端口映射,将宿主机的 8080 端口映射到容器的 5000 端口,这样我们就可以通过访问宿主机的 8080 端口来访问容器内运行的 Flask 应用。flask - app是我们刚刚构建的镜像名称。

步骤四:访问应用

打开浏览器,输入http://localhost:8080,你应该能够看到Hello, Docker!的页面,这表明我们的 Web 应用已经成功部署并运行在 Docker 容器中。

步骤五:查看容器日志

如果应用出现问题,我们可以使用docker logs命令查看容器的日志,以排查问题:

 

docker logs <容器ID或容器名>

将<容器ID或容器名>替换为实际的容器 ID 或你在运行容器时指定的名称,就可以查看容器的运行日志,从中找到可能存在的错误信息。

步骤六:停止和删除容器

当我们不再需要这个容器时,可以使用以下命令停止和删除它:

 

# 停止容器

docker stop <容器ID或容器名>

# 删除容器

docker rm <容器ID或容器名>

6.2 总结与展望

通过以上对 Docker 常用命令的详细介绍和实战案例,我们可以看到 Docker 在简化应用部署、提高开发效率和保障环境一致性方面具有巨大的优势。掌握这些常用命令,如镜像操作命令、容器操作命令、数据卷与网络命令等,是熟练使用 Docker 的基础。

希望大家能够深入学习和实践 Docker 技术,不断探索其更多的功能和应用场景。在未来,随着云计算、边缘计算等技术的不断发展,Docker 作为容器化技术的代表,将在软件开发、部署和运维领域发挥更加重要的作用。它将助力企业实现更加高效、灵活和可扩展的应用架构,推动数字化转型的进程。让我们一起拥抱 Docker,开启更加精彩的技术之旅!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2299007.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp - iconfont下载本地并且运用至项目上

1、项目中创建一个文件夹放置iconfont相关文件&#xff0c;例如src/assets/iconfont&#xff08;名称自己定义&#xff09; 2、在iconfont下载项目至本地 3、解压后把文件复制进1的文件夹中 4、修改src/assets/iconfont - iconfont.css里的font-face的src地址&#xff0c;修…

【前端】自己从头实现一个gpt聊天页面

预览 最小化功能点 主界面&#xff1a;侧边栏会话历史、聊天窗口发送和断开。侧边栏&#xff1a;展示会话列表&#xff0c;每个会话包含多条聊天记录&#xff0c; 通过localstorage本地储存和恢复&#xff0c;会话需要重命名和删除。聊天框&#xff1a;区分一下发送者和回答者…

数据结构——二叉树(2025.2.12)

目录 一、树 1.定义 &#xff08;1&#xff09;树的构成 &#xff08;2&#xff09;度 2.二叉树 &#xff08;1&#xff09;定义 &#xff08;2&#xff09;二叉树的遍历 &#xff08;3&#xff09;遍历特性 二、练习 1.二叉树 &#xff08;1&#xff09;创建二叉树…

Vulhub靶机 ActiveMQ任意 文件写入(CVE-2016-3088)(渗透测试详解)

一、开启vulhub环境 docker-compose up -d 启动 docker ps 查看开放的端口 漏洞版本&#xff1a;ActiveMQ在5.14.0之前的版本&#xff08;不包括5.14.0&#xff09; 二、访问靶机IP 8161端口 默认账户密码都是admin 1、利用bp抓包&#xff0c;修改为PUT方法并在fileserver…

跟着李沐老师学习深度学习(十一)

经典的卷积神经网络 在本次笔记中主要介绍一些经典的卷积神经网络模型&#xff0c;主要包含以下&#xff1a; LeNet&#xff1a;最早发布的卷积神经网络之一&#xff0c;目的是识别图像中的手写数字&#xff1b;AlexNet&#xff1a; 是第一个在大规模视觉竞赛中击败传统计算机…

【微软- Entra ID】Microsoft Entra ID

Microsoft Entra ID是微软提供的基于云的身份和访问管理服务。Microsoft Entra ID是一个全面的解决方案,用于管理身份、执行访问策略以及在云和本地保护您的应用程序和数据。 目录 一、查看 Microsoft Entra ID 微软Entra租户 微软Entra模式 二、比较Microsoft Entra ID与…

Halcon相机标定

1&#xff0c;前言。 相机的成像过程实质上是坐标系的转换。首先空间中的点由“世界坐标系”转换到“相机坐标系”&#xff0c;然后再将其投影到成像平面&#xff08;图像物理坐标系&#xff09;&#xff0c;最后再将成像的平面上的数据转换为图像像素坐标系。但是由于透镜的制…

Linux 配置 MySQL 定时自动备份到另一台服务器

Linux 配置 MySQL 定时自动备份到另一台服务器 前言1、配置服务器通信1.1&#xff1a;配置过程 2、编写自动备份sh脚本文件3&#xff1a;设置定时自动执行 前言 此方案可使一台服务器上的 MySQL 中的所有数据库每天 0 点自动转储为 .sql 文件&#xff0c;然后将文件同步到另一…

《安富莱嵌入式周报》第350期:Google开源Pebble智能手表,开源模块化机器人平台,开源万用表,支持10GHz HRTIM的单片机,开源CNC控制器

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版&#xff1a; https://www.bilibili.com/video/BV1YPKEeyEeM/ 《安富莱嵌入式周报》第350期&#xff1a;Google开…

LabVIEW与小众设备集成

在LabVIEW开发中&#xff0c;当面临控制如布鲁克OPUS红外光谱仪这类小众专业设备的需求&#xff0c;而厂家虽然提供了配套软件&#xff0c;但由于系统中还需要控制其他设备且不能使用厂商的软件时&#xff0c;必须依赖特定方法通过LabVIEW实现设备的控制。开发过程中&#xff0…

无人机之无线传输技术!

一、Lightbridge和OcuSync图传技术 Lightbridge技术&#xff1a;这是大疆自主研发的一种专用通信链路技术&#xff0c;使用单向图像数据传输&#xff0c;类似于电视广播塔的数据传输形式。它主要采用2.4GHz频段进行传输&#xff0c;并且可以实现几乎“零延时”的720p高清图像传…

移远通信边缘计算模组成功运行DeepSeek模型,以领先的工程能力加速端侧AI落地

近日&#xff0c;国产大模型DeepSeek凭借其“开源开放、高效推理、端侧友好”的核心优势&#xff0c;迅速风靡全球。移远通信基于边缘计算模组SG885G&#xff0c;已成功实现DeepSeek模型的稳定运行&#xff0c;并完成了针对性微调。 目前&#xff0c;该模型正在多款智能终端上进…

rust学习一、入门之搭建简单开发环境

1、搭建开发环境(windows11&#xff09; a.登录官网 一看就明白&#xff0c;此处略。 b.安装rustup 一看就明白&#xff0c;此处略。 c.安装 cargo script 或者 rust-script script cargo install cargo-script 完成后 注意&#xff1a;时间有一点点久。 测试 cargo s…

FANUC机器人示教器中如何显示或关闭寄存器或IO的注释信息?

FANUC机器人示教器中如何显示或关闭寄存器或IO的注释信息? 如下图所示,我们打开一个子程序,可以看到程序中的寄存器和IO是显示注释信息的, 如果想关闭注释显示的话,怎么设置? 如下图所示,按下下一页的箭头(NEXT键), 如下图所示,点击“编辑”,在弹出的窗口中,选择“…

在springboot加vue项目中加入图形验证码

后端 首先先要创建一个CaptchaController的类&#xff0c;可以在下面的代码中看到 在getCaptcha的方法里面写好了生成随机的4位小写字母或数字的验证码&#xff0c;然后通过BufferedImage类变为图片&#xff0c;顺便加上了干扰线。之后把图片转为Base64编码方便传给前端 为了…

23. AI-大语言模型

文章目录 前言一、LLM1. 简介2. 工作原理和结构3. 应用场景4. 最新研究进展5. 比较 二、Transformer架构1. 简介2. 基本原理和结构3. 应用场景4. 最新进展 三、开源1. 开源概念2. 开源模式3. 模型权重 四、再谈DeepSeek 前言 AI‌ 一、LLM LLM&#xff08;Large Language Mod…

Spring Cloud-Sentinel

Sentinel服务熔断与限流 Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量控制、流量路由、熔断降级、系统自适应保护等多个维度来帮助用户保障微服务的稳定性。 官网地址&#xff1a;home | Sentinelhttps://sen…

Java中使用EasyExcel

Java中使用EasyExcel 文章目录 Java中使用EasyExcel一&#xff1a;EasyExcel介绍1.1、核心函数导入数据导出数据 1.2、项目实际应用导入数据导出数据 1.3、相关注解ExcelProperty作用示例 二&#xff1a;EasyExcel使用2.1、导入功能2.2、导出功能 三&#xff1a;EasyExcel完整代…

建筑兔零基础自学python记录18|实战人脸识别项目——视频检测07

本次要学视频检测&#xff0c;我们先回顾一下图片的人脸检测建筑兔零基础自学python记录16|实战人脸识别项目——人脸检测05-CSDN博客 我们先把上文中代码复制出来&#xff0c;保留红框的部分。 ​ 然后我们来看一下源代码&#xff1a; import cv2 as cvdef face_detect_demo(…

自定义基座实时采集uniapp日志

自定义基座实时采集uniapp日志 打测试包给远端现场(测试/客户)实际测试时也能实时看到日志了&#xff0c;也有代码行数显示。 流程设计 #mermaid-svg-1I5W9r1DU4xUsaTF {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid…