当前位置: 首页 > news >正文

【Docker】 常用命令

文章目录

      • 介绍Docker和容器化技术
        • 什么是Docker?
        • Docker的优势和应用场景
        • Docker的应用场景包括但不限于:
      • 安装和配置Docker
        • 安装Docker引擎
        • 配置Docker环境
      • Docker镜像命令
        • 搜索镜像
        • 拉取镜像
        • 查看本地镜像
        • 删除本地镜像
      • Docker容器命令
        • 创建容器
        • 启动容器
        • 停止容器
        • 查看容器状态
        • 进入容器
        • 删除容器
      • Docker网络命令
        • 创建网络
        • 查看网络
        • 连接容器到网络
        • 断开容器与网络的连接
      • Docker数据卷命令
        • 创建数据卷
        • 查看数据卷
        • 挂载数据卷到容器
        • 备份和恢复数据卷
      • Docker Compose命令
        • 编写Docker Compose文件
        • 启动和停止应用
        • 查看应用状态
      • Docker Swarm命令
        • 初始化Swarm模式
        • 添加节点
        • 部署服务
        • 扩展和缩减服务
      • Docker Registry命令
        • 搭建私有仓库
        • 推送镜像到私有仓库
        • 从私有仓库拉取镜像
      • 实际应用示例
        • 使用Docker部署Web应用
        • 使用Docker构建多容器应用
      • Jenkins服务器中部署docker的简单调用

介绍Docker和容器化技术

什么是Docker?

Docker是一种开源的容器化平台,可以让开发者打包应用程序及其所有依赖关系(如库、环境变量、配置文件等)到一个称为容器的独立运行环境中。容器是一种轻量级、可移植的软件单元,它们可以在任何支持Docker的环境中运行,而不受底层系统的影响。

Docker的优势和应用场景
  1. 轻量级和快速部署: Docker容器相比于传统虚拟机更轻量级,启动速度更快,使得应用程序的部署和扩展变得更加高效。

  2. 环境一致性: Docker容器可以确保在不同环境中应用程序的行为一致,避免了“在我的机器上可以运行”的问题。

  3. 资源利用率高: 多个Docker容器可以共享主机的操作系统内核,节省了资源,提高了系统利用率。

  4. 易于管理: Docker提供了丰富的命令行工具和API,使得容器的管理、监控、日志查看等操作变得简单。

  5. 应用隔离: 每个Docker容器都是相互隔离的,一个容器的问题不会影响其他容器,提高了应用程序的安全性。

Docker的应用场景包括但不限于:
  • 微服务架构: Docker容器适合部署和管理微服务,每个微服务可以打包成一个独立的容器,便于扩展和维护。

  • 持续集成和持续部署(CI/CD): Docker容器可以在不同环境中快速部署,适合用于构建持续集成和持续部署的流程。

  • 开发环境隔离: 开发人员可以使用Docker容器来创建隔离的开发环境,避免开发环境与生产环境不一致导致的问题。

  • 跨平台开发: Docker容器可以在不同操作系统和云平台上运行,使得应用程序在各种环境中具有高度的可移植性。

通过使用Docker,开发者可以更加便捷地构建、交付和运行应用程序,提高了开发效率和部署灵活性,成为现代软件开发中不可或缺的一环。

安装和配置Docker

安装Docker引擎

安装Docker引擎是使用Docker的第一步。以下是安装Docker引擎的常见步骤:

  1. Ubuntu系统下安装Docker:

    • 更新apt软件包索引:

      sudo apt-get update
      
    • 安装必要的软件包以允许apt通过HTTPS使用存储库:

      sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
      
    • 添加Docker的官方GPG密钥:

      curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
      
    • 设置Docker稳定版存储库:

      sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
      
    • 更新apt软件包索引:

      sudo apt-get update
      
    • 安装最新版本的Docker:

      sudo apt-get install docker-ce
      
    • 验证Docker是否安装成功:

      sudo docker --version
      
  2. macOS系统下安装Docker:

    • 下载Docker Desktop for Mac并安装:https://www.docker.com/products/docker-desktop
  3. Windows系统下安装Docker:

    • 下载Docker Desktop for Windows并安装:https://www.docker.com/products/docker-desktop
配置Docker环境

安装完Docker后,通常不需要太多额外的配置。但是,你可以根据需要进行一些常见的配置,如:

  1. 配置Docker镜像加速器: 在国内使用Docker时,可以配置镜像加速器以加速镜像的拉取和推送。常用的镜像加速器有阿里云加速器、网易云加速器等。

  2. 配置Docker容器网络: 可以创建自定义网络以连接Docker容器,或者使用默认的桥接网络。

  3. 配置Docker存储: 可以配置Docker容器的存储驱动,如使用本地存储、网络存储或云存储等。

  4. 安全配置: 可以配置Docker的安全参数,如限制容器的资源使用、设置用户访问权限等。

配置Docker环境可以根据实际需求进行调整,确保Docker在你的开发和部署流程中能够更好地发挥作用。

Docker镜像命令

搜索镜像

要在Docker Hub上搜索镜像,可以使用以下命令:

docker search <镜像名称>

例如,要搜索名为ubuntu的镜像,可以运行:

docker search ubuntu
拉取镜像

要拉取一个镜像到本地,可以使用以下命令:

docker pull <镜像名称>:<标签>

例如,要拉取Ubuntu 20.04的镜像,可以运行:

docker pull ubuntu:20.04
查看本地镜像

要查看本地已经拉取的镜像列表,可以使用以下命令:

docker images

这将列出本地所有的镜像,包括镜像名称、标签、镜像ID、创建时间等信息。

删除本地镜像

要删除本地的一个或多个镜像,可以使用以下命令:

docker rmi <镜像ID或镜像名称>

如果要删除多个镜像,可以在命令中指定多个镜像ID或名称。

例如,要删除名为ubuntu:20.04的镜像,可以运行:

docker rmi ubuntu:20.04

请注意,删除镜像时要谨慎,确保不再需要这些镜像,因为删除后将无法恢复。

Docker容器命令

创建容器

要创建一个容器,可以使用以下命令:

docker create <镜像名称> <命令>

例如,要创建一个基于Ubuntu 20.04镜像的容器,可以运行:

docker create ubuntu:20.04
启动容器

要启动一个已经创建的容器,可以使用以下命令:

docker start <容器ID或容器名称>

例如,要启动名为my_container的容器,可以运行:

docker start my_container
停止容器

要停止一个正在运行的容器,可以使用以下命令:

docker stop <容器ID或容器名称>

例如,要停止名为my_container的容器,可以运行:

docker stop my_container
查看容器状态

要查看容器的状态,可以使用以下命令:

docker ps

这将列出正在运行的容器的信息,包括容器ID、镜像名称、状态、创建时间等。

如果要查看所有包括已停止的容器,可以使用-a选项:

docker ps -a
进入容器

要进入一个正在运行的容器,可以使用以下命令:

docker exec -it <容器ID或容器名称> <命令>

例如,要进入名为my_container的容器并打开一个交互式终端,可以运行:

docker exec -it my_container bash

这将在容器内部打开一个bash终端,可以在其中执行命令。

删除容器

要删除一个容器,可以使用以下命令:

docker rm <容器ID或容器名称>

例如,要删除名为my_container的容器,可以运行:

docker rm my_container

请注意,删除容器时要谨慎,确保不再需要这些容器,因为删除后将无法恢复。

Docker网络命令

创建网络

要创建一个自定义网络,可以使用以下命令:

docker network create <网络名称>

例如,要创建一个名为my_network的网络,可以运行:

docker network create my_network
查看网络

要查看Docker中存在的网络列表,可以使用以下命令:

docker network ls

这将列出所有的Docker网络,包括网络ID、名称、驱动程序等信息。

连接容器到网络

要将一个容器连接到指定的网络,可以使用以下命令:

docker network connect <网络名称> <容器ID或容器名称>

例如,要将容器my_container连接到my_network网络,可以运行:

docker network connect my_network my_container
断开容器与网络的连接

要将一个容器与指定网络断开连接,可以使用以下命令:

docker network disconnect <网络名称> <容器ID或容器名称>

例如,要将容器my_containermy_network网络断开连接,可以运行:

docker network disconnect my_network my_container

请注意,网络命令可以帮助您管理Docker中的网络配置,确保容器能够按照需要进行通信和连接。

Docker数据卷命令

创建数据卷

要创建一个数据卷,可以使用以下命令:

docker volume create <数据卷名称>

例如,要创建名为my_volume的数据卷,可以运行:

docker volume create my_volume
查看数据卷

要查看所有的数据卷,可以使用以下命令:

docker volume ls

这将列出所有的数据卷,包括数据卷的名称和驱动程序。

挂载数据卷到容器

要将一个数据卷挂载到容器中,可以使用以下命令:

docker run -v <数据卷名称>:<容器路径> <镜像名称>

例如,要将名为my_volume的数据卷挂载到容器的/data路径,可以运行:

docker run -v my_volume:/data ubuntu:20.04

这将创建一个基于Ubuntu 20.04镜像的容器,并将my_volume数据卷挂载到容器的/data路径。

备份和恢复数据卷

要备份数据卷,可以使用以下命令将数据卷导出为一个.tar文件:

docker run --rm -v <数据卷名称>:/data -v <目标路径>:/backup ubuntu:20.04 tar cvf /backup/<备份文件名>.tar /data

例如,要备份名为my_volume的数据卷到/backup目录下的my_volume_backup.tar文件中,可以运行:

docker run --rm -v my_volume:/data -v /backup:/backup ubuntu:20.04 tar cvf /backup/my_volume_backup.tar /data

要恢复数据卷,可以使用以下命令将.tar文件导入到一个新的数据卷中:

docker run --rm -v <目标路径>:/data -v <备份文件路径>:/backup ubuntu:20.04 tar xvf /backup/<备份文件名>.tar -C /data

例如,要将/backup目录下的my_volume_backup.tar文件恢复为一个名为my_volume_restore的数据卷,可以运行:

docker run --rm -v my_volume_restore:/data -v /backup:/backup ubuntu:20.04 tar xvf /backup/my_volume_backup.tar -C /data

这将创建一个名为my_volume_restore的数据卷,并将备份文件中的内容恢复到该数据卷中。

Docker Compose命令

编写Docker Compose文件

Docker Compose使用YAML文件来定义和配置多个容器应用。以下是一个简单的Docker Compose文件示例:

version: '3'
services:web:image: nginx:latestports:- 80:80volumes:- ./html:/usr/share/nginx/html

在这个示例中,我们定义了一个名为web的服务,使用了nginx:latest镜像,并将主机的80端口映射到容器的80端口。还使用了一个数据卷将主机上的./html目录挂载到容器的/usr/share/nginx/html路径。

启动和停止应用

要启动使用Docker Compose定义的应用程序,可以使用以下命令:

docker-compose up

这将根据Docker Compose文件启动所有定义的服务。

要停止应用程序,可以使用以下命令:

docker-compose down

这将停止并移除所有相关的容器、网络和数据卷。

查看应用状态

要查看Docker Compose应用程序的状态,可以使用以下命令:

docker-compose ps

这将显示所有定义的服务的状态,包括容器ID、状态、端口映射等信息。

可以使用其他Docker命令,如docker psdocker logs,来查看单个服务的状态和日志。

Docker Swarm命令

Docker Swarm是Docker的内置原生集群和编排工具。它允许您将多个Docker主机组成一个集群,以便轻松地部署和管理分布式应用程序。

初始化Swarm模式

要初始化一个Docker Swarm集群,可以使用以下命令:

docker swarm init

这将将当前主机设置为Swarm管理节点,并生成一个加入令牌,用于其他节点加入集群。

添加节点

要将其他节点加入到Swarm集群中,可以使用以下命令:

docker swarm join --token <加入令牌> <管理节点IP>:<端口>

其中,<加入令牌>是在初始化Swarm模式时生成的加入令牌,<管理节点IP>是Swarm管理节点的IP地址,<端口>是Swarm管理节点的监听端口。

部署服务

要在Swarm集群中部署服务,可以使用以下命令:

docker service create --name <服务名称> --replicas <副本数> <镜像名称>

其中,<服务名称>是要部署的服务的名称,<副本数>是要运行的服务副本数,<镜像名称>是要使用的镜像名称。

例如,要部署一个名为my_service的服务,使用nginx:latest镜像,并运行3个副本,可以运行:

docker service create --name my_service --replicas 3 nginx:latest
扩展和缩减服务

要扩展或缩减Swarm集群中的服务副本数,可以使用以下命令:

docker service scale <服务名称>=<副本数>

例如,要将名为my_service的服务的副本数扩展到5个,可以运行:

docker service scale my_service=5

这将增加my_service服务的副本数到5个。

要缩减副本数,只需将<副本数>设置为较小的值即可。

请注意,Swarm会自动处理服务的副本分布和容器的调度,以确保服务的高可用性和负载均衡。

Docker Registry命令

Docker Registry是Docker官方提供的镜像仓库服务,您可以使用它来存储和管理Docker镜像。您可以搭建私有的Docker Registry来存储自己的镜像。

搭建私有仓库

要搭建私有的Docker Registry,可以使用以下命令:

docker run -d -p 5000:5000 --restart=always --name registry registry:2

这将在本地启动一个私有的Docker Registry服务,并映射到主机的5000端口。

推送镜像到私有仓库

要将一个镜像推送到私有仓库,首先需要给镜像打上私有仓库地址的标签,然后推送到私有仓库。以下是推送镜像到私有仓库的命令:

docker tag image_name localhost:5000/image_name
docker push localhost:5000/image_name

这将把名为image_name的镜像推送到搭建的私有仓库中。

从私有仓库拉取镜像

要从私有仓库拉取镜像,可以使用以下命令:

docker pull localhost:5000/image_name

这将从私有仓库中拉取名为image_name的镜像到本地。

实际应用示例

使用Docker部署Web应用

以下是使用Docker部署Web应用的示例步骤:

  1. 编写Dockerfile:创建一个名为Dockerfile的文件,其中定义了如何构建Web应用的Docker镜像。例如,可以基于一个现有的Web服务器镜像,如Nginx或Apache,将应用程序代码复制到镜像中,并设置适当的配置。

  2. 构建Docker镜像:在终端中导航到包含Dockerfile的目录,并运行以下命令来构建镜像:

    docker build -t my_web_app .
    

    这将根据Dockerfile构建一个名为my_web_app的镜像。

  3. 运行Docker容器:使用以下命令将镜像作为容器运行起来:

    docker run -d -p 80:80 my_web_app
    

    这将在端口80上将容器的80端口映射到主机上,使Web应用可通过主机的IP地址访问。

现在,您的Web应用已经在Docker容器中运行,并且可以通过主机的IP地址访问。

使用Docker构建多容器应用

对于复杂的应用程序,可能需要多个容器来支持不同的组件。以下是使用Docker构建多容器应用的示例步骤:

  1. 编写Docker Compose文件:创建一个名为docker-compose.yml的文件,其中定义了应用程序的各个服务和它们之间的依赖关系。在该文件中,可以指定每个服务使用的镜像、容器之间的网络连接等。

  2. 编写Dockerfile:为每个服务编写Dockerfile,定义如何构建每个服务的镜像。可以使用不同的基础镜像和安装所需的软件包、配置等。

  3. 构建和启动应用程序:在终端中导航到包含docker-compose.yml文件的目录,并运行以下命令来构建和启动应用程序:

    docker-compose up -d
    

    这将根据docker-compose.yml文件中的配置构建和启动应用程序的所有服务。

现在,您的多容器应用程序已经在Docker中构建和运行起来了。Docker Compose会自动处理服务之间的网络连接和依赖关系,使应用程序的部署变得简单和可靠。

请注意,这只是一个简单的示例,实际的多容器应用程序可能涉及更多的服务和复杂的配置。

Jenkins服务器中部署docker的简单调用

  1. 运行命令

    docker run -d -it --name rocketmq-dashboard --restart=always -d -p 6765:8080 xxx.com/cea/rocketmq-dashboard:1.0.0
    
    • docker run: 运行一个新的容器。
    • -d: 后台运行容器。
    • -it: 分配一个伪终端并保持标准输入打开。
    • --name rocketmq-dashboard: 为容器指定一个名称为 rocketmq-dashboard
    • --restart=always: 设置容器总是在Docker守护进程启动时重新启动。
    • -p 6765:8080: 将主机的端口6765映射到容器的端口8080。
    • xxx.com/cea/rocketmq-dashboard:1.0.0: 要运行的镜像名称及其标签。
  2. 查看进程名称

    docker ps
    
    • docker ps: 查看正在运行的容器列表。
  3. 进入运行目录
    进入运行目录 xxxx 可以是ps查出来的名称 也可以是id

    docker exec -it xxxxx /bin/bash
    
    • docker exec: 在运行的容器中执行命令。
    • -it: 分配一个伪终端并保持标准输入打开。
    • xxxxx: 容器的名称或ID。
    • /bin/bash: 要在容器中执行的命令,这里是启动一个bash shell。

相关文章:

【Docker】 常用命令

文章目录 介绍Docker和容器化技术什么是Docker&#xff1f;Docker的优势和应用场景Docker的应用场景包括但不限于&#xff1a; 安装和配置Docker安装Docker引擎配置Docker环境 Docker镜像命令搜索镜像拉取镜像查看本地镜像删除本地镜像 Docker容器命令创建容器启动容器停止容器…...

docker compose - 设置名字

只使用 docker compose up 启动容器&#xff0c;默认名字为当前文件夹的名字 设置 project-name&#xff0c;docker 客户端会显示设置的名字&#xff0c;方便区分 docker compose --project-name webtest up错误&#xff1a; docker compose up --project-name webtest 效果…...

工业拍卖平台、信息发布、租赁商城平台系统适用于全行业解决方案。

工业拍卖平台系统是为工业领域的资产交易、设备处置等提供线上拍卖服务的数字化平台。 主要功能&#xff1a; 拍卖信息发布&#xff1a;平台会展示待拍卖的工业资产详细信息&#xff0c;包括设备的名称、型号、规格、使用年限、生产厂家等基本信息&#xff0c;以及资产的图片…...

一个win32 / WTL下多线程库(CThread类)的使用心得

说是多线程库&#xff0c;其实就是一个单独的.h文件&#xff0c;可以方便的放入WTL/win32工程中。 下载地址&#xff1a;CThread. 里面也简单介绍了 用法。 具体用法&#xff0c;首先自定义一个子线程类继承CThreadImpl<T>&#xff0c;注意他是个模板类。 class CMySu…...

使用wordpress搭建简易的信息查询系统

背景 当前有这样的一个需求&#xff0c;要实现让客户能够自助登录系统查询一些个人的信息&#xff0c;市面上没有特别符合我的需求的产品&#xff0c;经过一段时间的研究&#xff0c;想出了一个用wordpress实现简易信息查询系统&#xff0c;有两种方式。 方式一&#xff1a;使…...

PAT甲级 1076 Forwards on Weibo(30)

文章目录 题目题目翻译深度优先搜索&#xff08;dfs&#xff09;宽度优先搜索&#xff08;bfs&#xff09;总结 原题链接 题目 题目翻译 微博被称为中国的推特。在微博上&#xff0c;一个用户可能有很多粉丝&#xff0c;也可能关注许多其他用户。因此&#xff0c;通过粉丝关系…...

揭开 gRPC、RPC 、TCP和UDP 的通信奥秘

差异点 特性TCPUDPRPCgRPCHTTP工作层级传输层传输层应用层应用层应用层传输协议面向连接的传输协议无连接传输协议使用 TCP、HTTP 等协议HTTP/2HTTP/1.1, HTTP/2序列化格式字节流数据报文XML、JSON 或自定义Protocol BuffersJSON 或 XML特点可靠的连接传输无连接、快速传输远程…...

使用Web Worker来处理多线程操作,以及如何避免主线程卡顿。

在JavaScript中处理大量数据时&#xff0c;由于JavaScript是单线程的&#xff0c;所有的操作都在主线程上运行&#xff0c;因此处理大量数据可能导致页面卡顿和响应迟缓。为了避免这些问题&#xff0c;可以使用Web Workers来实现多线程操作&#xff0c;允许在后台线程中处理复杂…...

杂谈:业务说的场景金融是什么?

引言&#xff1a;市场格局的转变 在供应短缺的年代&#xff0c;是典型的卖方市场。为了保证稳定供货&#xff0c;买方会提前一段时间下单&#xff0c;也几乎没什么议价能力。卖方只需等着接单就行。 现在很多领域的供应商数量越来越多&#xff0c;而且随着互联网的普及&#…...

在vscode实现用和Chrome开发者工具中相同的快捷键进行面板切换

在Chrome开发者工具中&#xff0c;我们可以用 Ctrl [ 和 Ctrl ] 快捷键来切换面板&#xff0c;用起来很方便。 vscode中默认没有这两个快捷键&#xff0c;我们可以通过配置自定义快捷键来实现相同的功能。 配置方法&#xff1a; 1. 按 Ctrl K, Ctrl S 调出快捷键配置面板。…...

【ESP32+MicroPython】硬件控制基础

ESP32是一款功能强大的微控制器&#xff0c;具有多种硬件接口。本文以“ESP32硬件控制”为主题&#xff0c;逐步介绍GPIO&#xff08;通用输入输出&#xff09;、PWM&#xff08;脉宽调制&#xff09;、ADC&#xff08;模数转换&#xff09;等功能的原理与实现&#xff0c;并结…...

Python学习从0到1 day26 第三阶段 Spark ① 数据输入

要学会 剥落旧痂 然后 循此新生 —— 24.11.8 一、Spark是什么 定义&#xff1a; Apache Spark 是用于大规模数据处理的统一分析引擎 简单来说&#xff0c;Spark是一款分布式的计算框架&#xff0c;用于调度成百上千的服务器集群&#xff0c;计算TB、PB乃至EB级别的海量数据…...

kafka消费者的消费分区策略有哪些,默认是哪个?

Kafka消费者的分区分配策略主要有以下几种&#xff0c;分别决定了如何将多个分区分配给消费者&#xff1a; 1. Range&#xff08;范围分配&#xff09; 描述&#xff1a;将分区连续地分配给消费者。每个消费者负责一段连续的分区。如果有多个消费者&#xff0c;那么消费者会按…...

前端常用时间操作汇总

&#xff08;1&#xff09;获取中国标准时间&#xff1a; let now new Date(); ​ // Thu Nov 14 2024 17:13:49 GMT0800 (中国标准时间) &#xff08;2&#xff09;获取年份&#xff1a; let year now.getFullYear(); ​ // 2024 &#xff08;3&#xff09;获取月份&…...

106. UE5 GAS RPG 使用MVVM

MVVM 是 Model-View-ViewModel的缩写&#xff0c;个人理解它和MVC很相似&#xff0c;有区别的地方在于&#xff0c;在MVC里&#xff0c;Controller会服务多个View&#xff0c;而MVVM里&#xff0c;每个View都拥有一个单独的ViewModel&#xff0c;所以ViewModel相当于精简版的Co…...

Elasticsearch中什么是倒排索引?

倒排索引&#xff08;Inverted Index&#xff09;是一种索引数据结构&#xff0c;它在信息检索系统中被广泛使用&#xff0c;特别是在全文搜索引擎中。倒排索引允许系统快速检索包含给定单词的文档列表。它是文档内容&#xff08;如文本&#xff09;与其存储位置之间的映射&…...

深度学习:AT Decoder 详解

AT Decoder 详解 在序列到序列的模型架构中&#xff0c;自回归解码器&#xff08;Autoregressive Translator, AT Decoder&#xff09;是一种核心组件&#xff0c;其设计目标是确保生成的序列在语义和语法上的连贯性与准确性。自回归解码器通过逐步、依赖前一输出来生成新的输…...

pythons工具——图像的随机增强变换(只是变换了图像,可用于分类训练数据的增强)

从文件夹中随机选择一定数量的图像&#xff0c;然后对每个选定的图像进行一次随机的数据增强变换。 import os import random import cv2 import numpy as np from PIL import Image, ImageEnhance, ImageOps# 定义各种数据增强方法 def random_rotate(image, angle_range(-30…...

C++中volatile限定符详解

volatile是 C 和 C 中的一个类型限定符&#xff0c;它用于告诉编译器被修饰的变量具有特殊的属性&#xff0c;编译器在对该变量进行优化时需要特殊对待。以下是volatile限定符的主要作用&#xff1a; 1. 防止优化 内存访问顺序&#xff1a;在多线程环境或者与硬件交互的程序中…...

如何关闭Python解释器

方法1&#xff1a;采用sys.exit(0)正常终止程序&#xff0c;从图中可以看到&#xff0c;程序终止后shell运行不受影响。 方法2&#xff1a;采用os._exit(0)关闭整个shell&#xff0c;从图中看到&#xff0c;调用sys._exit(0)后整个shell都重启了&#xff08;RESTART Shell&…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

热烈祝贺埃文科技正式加入可信数据空间发展联盟

2025年4月29日&#xff0c;在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上&#xff0c;可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞&#xff0c;强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...

Linux 下 DMA 内存映射浅析

序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存&#xff0c;但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程&#xff0c;可以参考这篇文章&#xff0c;我觉得写的非常…...

TJCTF 2025

还以为是天津的。这个比较容易&#xff0c;虽然绕了点弯&#xff0c;可还是把CP AK了&#xff0c;不过我会的别人也会&#xff0c;还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...

高端性能封装正在突破性能壁垒,其芯片集成技术助力人工智能革命。

2024 年&#xff0c;高端封装市场规模为 80 亿美元&#xff0c;预计到 2030 年将超过 280 亿美元&#xff0c;2024-2030 年复合年增长率为 23%。 细分到各个终端市场&#xff0c;最大的高端性能封装市场是“电信和基础设施”&#xff0c;2024 年该市场创造了超过 67% 的收入。…...