Docker 通信核心:docker.sock 完全指南

作者:做运维的阿瑞日期:2025/10/20

阅读时长: 15min | 难度: 中级 | 作者: 做运维的阿瑞 | 更新时间: 2025-10

在这里插入图片描述

文章目录

    • 前言
    • 一、Docker 通信原理总览
      • 1.1 技术架构解析
        • 1.2 核心技术对比
    • 二、核心用法与技巧
      • 2.1 容器内访问宿主机 Docker
        • 2.2 使用 Docker SDK
        • 2.3 直接与 API 交互
    • 三、安全风险与最佳实践
      • Q1: 有多危险?为什么说拿到 `docker.sock` 就等于 `root`?
        • Q2: 如何安全地授权用户使用 Docker?
        • Q3: 有没有比挂载 `docker.sock` 更安全的替代方案?
    • 四、实战案例:Jenkins 中的安全 Docker 镜像构建
      • 4.1 传统方案的问题
        • 4.2 安全的解决方案
        • 4.3 Jenkins Pipeline 示例
    • 五、常见问题排错锦囊
      • Q1: `docker.sock` 权限被拒绝
        • Q2: 容器内无法访问 `docker.sock`
        • Q3: SELinux 阻止访问
        • Q4: Docker API 版本不匹配
    • 总结
    • 推荐阅读
    • 参考资料

前言

在 Docker 的世界里,docker.sock 是一个绕不开的核心组件。它就像是 Docker 引擎的神经中枢,所有对 Docker 的操作指令,无论是来自命令行、图形界面还是 CI/CD 工具,几乎都离不开它。然而,这个强大的接口也是一把双刃剑,赋予你无上权力的同时,也带来了巨大的安全挑战。

本文将带你深入剖析 docker.sock,从核心原理到安全实践,从基础用法到高级技巧,帮助你全面掌握这个关键文件,构建一个既高效又安全的 Docker 环境。

1Docker 通信流程概览
2┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
3│   Docker CLI    │───▶│   docker.sock    │───▶│ Docker Daemon   │
4│                 │    │  (UNIX Socket)   │    │                 │
5│ docker ps       │    │                  │    │ 容器管理        │
6│ docker run      │    │ /var/run/        │    │ 镜像管理        │
7│ docker build    │    │ docker.sock      │    │ 网络管理        │
8└─────────────────┘    └──────────────────┘    └─────────────────┘
9        │                        │                        │
10        │                        │                        ▼
11        │                        │              ┌─────────────────┐
12        │                        │              │   Containerd    │
13        │                        │              │                 │
14        │                        │              │ 容器运行时      │
15        │                        │              └─────────────────┘
16        │                        │                        │
17        │                        │                        ▼
18        │                        │              ┌─────────────────┐
19        │                        │              │      Runc       │
20        │                        │              │                 │
21        │                        │              │ 底层容器执行    │
22        │                        │              └─────────────────┘
23        │                        │
24        ▼                        ▼
25┌─────────────────┐    ┌──────────────────┐
26│  第三方工具     │    │   编程语言SDK    │
27│                 │    │                  │
28│ Portainer       │    │ Python docker    │
29│ Watchtower      │    │ Go client        │
30│ Jenkins         │    │ Node.js dockerode│
31└─────────────────┘    └──────────────────┘
32

一、Docker 通信原理总览

1.1 技术架构解析

Docker 采用经典的 C/S (Client/Server) 架构。我们日常使用的 docker 命令实际上是客户端(Client),它通过一个接口与 Docker 守护进程(Daemon)通信,由守护进程来真正执行镜像构建、容器启停等操作。而 docker.sock 就是这个通信接口中最常用的一种。

Docker 通信架构流程图:

1                    Docker 完整通信架构
2    ┌─────────────────────────────────────────────────────────────┐
3    │                     User Space                              │
4    │  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐  │
5    │  │ Docker CLI  │  │ Docker SDK  │  │ Third-party Tools   │  │
6    │  │             │  │ (Python/Go) │  │ (Portainer/Jenkins) │  │
7    │  └─────────────┘  └─────────────┘  └─────────────────────┘  │
8    └─────────────────────────────────────────────────────────────┘
9                │              │                      │
10                │              │                      │
11                └──────────────┼──────────────────────┘
12                               │ UNIX Socket 通信
1314    ┌─────────────────────────────────────────────────────────────┐
15    │                   Kernel Space                              │
16    │              ┌─────────────────────────┐                    │
17    │              │  /var/run/docker.sock   │                    │
18    │              │  (UNIX Domain Socket)   │                    │
19    │              └─────────────────────────┘                    │
20    └─────────────────────────────────────────────────────────────┘
2122                               │ 内核级别转发
2324    ┌─────────────────────────────────────────────────────────────┐
25    │                   Docker Daemon                             │
26    │  ┌─────────────────┐                                        │
27    │  │ Docker API      │ ◄── 接收和处理 REST API 请求           │
28    │  │ Server          │                                        │
29    │  └─────────────────┘                                        │
30    │           │                                                 │
31    │           ▼                                                 │
32    │  ┌─────────────────┐                                        │
33    │  │ Containerd      │ ◄── 管理容器生命周期和镜像            │
34    │  │                 │                                        │
35    │  └─────────────────┘                                        │
36    │           │                                                 │
37    │           ▼                                                 │
38    │  ┌─────────────────┐                                        │
39    │  │ Runc            │ ◄── 创建和运行容器的底层工具          │
40    │  │                 │                                        │
41    │  └─────────────────┘                                        │
42    └─────────────────────────────────────────────────────────────┘
434445                    ┌─────────────────┐
46                    │   Linux Kernel  │
47                    │   (Namespaces,  │
48                    │   Cgroups, etc) │
49                    └─────────────────┘
50

1.2 核心技术对比

docker.sock 是一种 UNIX 域套接字(UDS),它只在本地进行进程间通信(IPC)。但 Docker 也支持通过 TCP 套接字进行远程通信。

通信方式优点缺点典型场景
UNIX Socket (docker.sock)性能高、开销小、默认配置、更安全(仅本地)只能在宿主机本地访问本地开发、容器内访问宿主机 Docker
TCP Socket支持远程访问、跨主机管理配置复杂、网络延迟、安全风险高(需 TLS 加密)远程管理 Docker 集群、CI/CD 分布式构建
SSH利用现有 SSH 认证,相对安全性能开销比 TCP 略高临时的、安全的远程单机管理

深入了解 UNIX 域套接字

什么是 UNIX Domain Socket (UDS)?

UDS 是一种在同一台操作系统上的两个进程之间进行数据交换的机制。与通过网络接口进行通信的 TCP/IP 套接字不同,UDS 使用文件系统作为其地址空间。

UDS vs. TCP Loopback:

  1. 性能: UDS 绕过了网络协议栈(TCP/IP),不需要进行 TCP 握手、校验和计算等操作,因此数据传输效率更高,延迟更低。
  2. 资源: UDS 不占用网络端口,避免了端口冲突的问题。
  3. 安全: UDS 的访问权限直接由文件系统的权限控制(user, group, other),比网络端口更容易管理。

docker.sock 正是利用了 UDS 的这些优点,为本地 Docker 操作提供了最高效、最安全的默认通信方式。

二、核心用法与技巧

2.1 容器内访问宿主机 Docker

这是 docker.sock 最经典的应用场景,常用于需要动态管理其他容器的"元容器"(Meta Container)。

1容器访问宿主机 Docker 流程
2┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
3│   容器内部      │    │   docker.sock    │    │   宿主机Docker  │
4│                 │    │   (挂载卷)       │    │                 │
5│ docker ps       │───▶│ /var/run/        │───▶│ 返回宿主机      │
6│ docker run      │    │ docker.sock      │    │ 容器列表        │
7│ docker build    │    │                  │    │                 │
8└─────────────────┘    └──────────────────┘    └─────────────────┘
9
1# 运行一个新容器,并将宿主机的 docker.sock 挂载进去
2docker run -it --rm \
3  -v /var/run/docker.sock:/var/run/docker.sock \
4  ubuntu:latest
5
6# 在容器内,你需要安装 docker-cli 才能与守护进程通信
7# apt-get update && apt-get install -y docker-ce-cli
8
9# 安装后,在容器内执行 docker ps,看到的是宿主机上的所有容器
10# docker ps
11

2.2 使用 Docker SDK

各种编程语言的 SDK 使得以编程方式与 Docker 交互成为可能。

Python 示例:

1import docker
2
3# 默认连接到 /var/run/docker.sock
4client = docker.from_env()
5
6# 列出宿主机上的所有容器
7print("Listing all containers on the host:")
8for container in client.containers.list(all=True):
9    print(f"  - ID: {container.short_id}, Name: {container.name}, Status: {container.status}")
10
11# 运行一个临时容器并获取其输出
12print("\\nRunning a temporary container...")
13logs = client.containers.run("alpine", "echo 'Hello from SDK!'")
14print(f"Container output: {logs.decode('utf-8').strip()}")
15

2.3 直接与 API 交互

你甚至可以使用 curl 这样的工具,通过 docker.sock 直接向 Docker API 发送 HTTP 请求。

1# 获取 Docker 版本信息 (等同于 docker version)
2curl --unix-socket /var/run/docker.sock http://localhost/version
3
4# 列出所有容器 (等同于 docker ps -a)
5curl --unix-socket /var/run/docker.sock http://localhost/containers/json?all=true | jq .
6

三、安全风险与最佳实践

docker.sock 挂载到容器中,常被称为"Docker out of Docker",这带来了极大的安全隐患。

1docker.sock 安全风险链
2┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
3│   恶意容器      │    │   docker.sock    │    │   宿主机系统    │
4│                 │    │   (挂载访问)     │    │                 │
5│ 获得sock权限    │───▶│ 执行任意docker   │───▶│ 完全控制宿主机  │
6│                 │    │ 命令             │    │                 │
7└─────────────────┘    └──────────────────┘    └─────────────────┘
8        │                        │                        │
9        ▼                        ▼                        ▼
10┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
11│ 攻击手段        │    │ 中间步骤         │    │ 最终后果        │
12│                 │    │                  │    │                 │
13│ • 特权容器      │    │ • 挂载根目录     │    │ • 读写任意文件  │
14│ • 网络劫持      │    │ • 绕过隔离       │    │ • 植入后门      │
15│ • 资源滥用      │    │ • 提权操作       │    │ • 数据泄露      │
16└─────────────────┘    └──────────────────┘    └─────────────────┘
17

Q1: 有多危险?为什么说拿到 docker.sock 就等于 root

现象:一个容器被挂载了 -v /var/run/docker.sock:/var/run/docker.sock

风险剖析详解

容器内的进程可以通过 docker.sock 与宿主机的 Docker Daemon 通信。这意味着,它拥有了在宿主机上执行任何 docker 命令的权力。攻击者可以轻易地:

  1. 启动一个特权容器: docker run --privileged
  2. 挂载宿主机根目录: docker run -v /:/host_root
  3. 修改宿主机文件: 在挂载了根目录的容器内,可以修改 /host_root 下的任何文件,例如写入 SSH 公钥、添加 cron job 等,从而实现"容器逃逸",完全控制宿主机。

Q2: 如何安全地授权用户使用 Docker?

现象:普通用户执行 docker ps 时提示 permission denied

解决方案
永远不要为了方便而直接 chmod 777 /var/run/docker.sock。正确的做法是使用 docker 用户组。

1Docker 用户权限管理流程
2┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
3│   普通用户      │    │   docker 用户组  │    │   docker.sock   │
4│                 │    │                  │    │                 │
5│ 无法访问Docker  │───▶│ 加入docker组     │───▶│ 获得访问权限    │
6│                 │    │                  │    │                 │
7└─────────────────┘    └──────────────────┘    └─────────────────┘
8        │                        │                        │
9        ▼                        ▼                        ▼
10┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
11│ usermod -aG     │    │ 权限验证         │    │ 正常使用Docker  │
12│ docker $USER    │    │ 660 root:docker  │    │ 命令            │
13└─────────────────┘    └──────────────────┘    └─────────────────┘
14
1# 1. 检查 docker 组是否存在,不存在则创建
2sudo groupadd --force docker
3
4# 2. 将当前用户添加到 docker 组
5sudo usermod -aG docker $USER
6
7# 3. 验证 docker.sock 的权限是否为 root:docker 和 660
8sudo chown root:docker /var/run/docker.sock
9sudo chmod 660 /var/run/docker.sock
10
11# 4. 重新登录或使用 newgrp docker 命令使组成员身份生效
12newgrp docker
13docker ps # 应该可以成功执行
14

Q3: 有没有比挂载 docker.sock 更安全的替代方案?

现象:我需要在 CI/CD 中构建镜像,但不想承担 docker.sock 的风险。

1Docker 安全替代方案对比
2┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
3│ Docker-in-Docker│    │   Rootless Mode  │    │     Podman      │
4│                 │    │                  │    │                 │
5│ • 完全隔离      │    │ • 非root运行     │    │ • 无daemon      │
6│ • 资源开销大    │    │ • 功能受限       │    │ • 兼容性好      │
7└─────────────────┘    └──────────────────┘    └─────────────────┘
8        │                        │                        │
9        ▼                        ▼                        ▼
10┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
11│ socket-proxy    │    │   远程API访问    │    │   本地替代      │
12│                 │    │                  │    │                 │
13│ • 权限控制      │    │ • 网络隔离       │    │ • 直接替换      │
14│ • 代理过滤      │    │ • TLS加密        │    │ • 更安全        │
15└─────────────────┘    └──────────────────┘    └─────────────────┘
16

解决方案

  1. Docker-in-Docker (DinD): 在一个特权容器(--privileged)内运行一个全新的、独立的 Docker Daemon。它与宿主机 Docker 完全隔离,但性能开销大,且特权容器本身也是一个安全风险点。
1docker run --privileged -d --name dind docker:dind
2docker run --rm --link dind:docker docker:cli docker ps
3
  1. Rootless Mode: 在非 root 用户下运行 Docker 守护进程。这是最安全的方案之一,但功能上有一些限制。
1# 安装 rootless Docker
2curl -fsSL https://get.docker.com/rootless | sh
3export PATH=/home/$USER/bin:$PATH
4export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock
5
  1. Podman: 一个无守护进程的容器引擎,其 CLI 与 Docker 兼容。每个用户都在自己的命名空间中管理容器,天然隔离。
1# Podman 无需 daemon,更安全
2podman run --rm -it alpine sh
3podman build -t myapp .
4
  1. 第三方代理服务: 部署一个安全的中间代理,它暴露有限的、经过授权的 API 端点,而不是整个 Docker API。例如 docker-socket-proxy
1version: '3'
2services:
3  socket-proxy:
4    image: tecnativa/docker-socket-proxy
5    environment:
6      CONTAINERS: 1
7      IMAGES: 1
8      AUTH: 1
9      NETWORKS: 0
10      VOLUMES: 0
11    volumes:
12      - /var/run/docker.sock:/var/run/docker.sock
13    ports:
14      - "2375:2375"
15

💡 深入了解 Docker Socket Proxy

docker-socket-proxy 是一个轻量级的安全代理,它位于客户端和 docker.sock 之间,通过白名单机制精确控制允许执行的 API 请求。

工作原理:

  1. 你启动一个 docker-socket-proxy 容器,并将真实的 docker.sock 挂载给它。
  2. 通过环境变量,你声明只允许 GET 类型的请求,或者只允许访问 /containers/images 相关的 API。
  3. 你的业务容器不再直接挂载 /var/run/docker.sock,而是通过网络连接到 docker-socket-proxy 容器。

示例:只读访问

1version: "3.8"
2services:
3  socket-proxy:
4    image: tecnativa/docker-socket-proxy
5    volumes:
6      - /var/run/docker.sock:/var/run/docker.sock:ro # 真实 socket 只读挂载
7    environment:
8      - CONTAINERS=1 # 只允许访问容器相关 API
9      # 更多配置...
10    ports:
11      - "127.0.0.1:2375:2375"
12
13  my-app:
14    image: my-app-image
15    environment:
16      - DOCKER_HOST=tcp://socket-proxy:2375 # 连接到代理
17

这种方式遵循了最小权限原则,极大地降低了 docker.sock 暴露带来的风险。

四、实战案例:Jenkins 中的安全 Docker 镜像构建

在企业级 CI/CD 环境中,Jenkins 需要构建 Docker 镜像是一个常见需求。以下是一个安全的实现方案:

1Jenkins Docker 构建安全架构
2┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
3│   Jenkins 主容器│    │   Docker-in-Docker│   │   镜像仓库      │
4│                 │    │                  │    │                 │
5│ • 构建逻辑      │───▶│ • 独立Docker环境 │───▶│ • 安全推送      │
6│ • Pipeline执行  │    │ • TLS加密通信    │    │ • 版本管理      │
7└─────────────────┘    └──────────────────┘    └─────────────────┘
8        │                        │                        │
9        ▼                        ▼                        ▼
10┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
11│ 隔离的构建环境  │    │ 安全的通信协议   │    │ 企业级镜像管理  │
12│ 无宿主机权限    │    │ 证书认证         │    │ 漏洞扫描        │
13└─────────────────┘    └──────────────────┘    └─────────────────┘
14

4.1 传统方案的问题

不安全的做法

1# Jenkins 容器启动时挂载 docker.sock
2docker run -d \
3  -v /var/run/docker.sock:/var/run/docker.sock \
4  -v jenkins_home:/var/jenkins_home \
5  jenkins/jenkins:lts
6

这种做法让 Jenkins 容器拥有了宿主机 Docker 的完全控制权,存在严重安全隐患。

4.2 安全的解决方案

使用 Docker-in-Docker + 安全配置

1version: '3.8'
2services:
3  jenkins:
4    image: jenkins/jenkins:lts
5    container_name: jenkins
6    user: root
7    volumes:
8      - jenkins_home:/var/jenkins_home
9      - /var/run/docker.sock:/var/run/docker.sock
10    environment:
11      - DOCKER_HOST=tcp://docker:2376
12      - DOCKER_TLS_VERIFY=1
13      - DOCKER_CERT_PATH=/certs/client
14    ports:
15      - "8080:8080"
16      - "50000:50000"
17    depends_on:
18      - docker
19
20  docker:
21    image: docker:dind
22    container_name: jenkins-docker
23    privileged: true
24    environment:
25      - DOCKER_TLS_CERTDIR=/certs
26    volumes:
27      - jenkins-docker-certs:/certs/client
28      - jenkins_home:/var/jenkins_home
29    ports:
30      - "2376:2376"
31    command: --storage-driver overlay2
32
33volumes:
34  jenkins_home:
35  jenkins-docker-certs:
36

4.3 Jenkins Pipeline 示例

1pipeline {
2    agent any
3    
4    stages {
5        stage('Build') {
6            steps {
7                script {
8                    // 构建 Docker 镜像
9                    def image = docker.build("myapp:${env.BUILD_ID}")
10                    
11                    // 推送到仓库
12                    docker.withRegistry('https://registry.hub.docker.com', 'docker-hub-credentials') {
13                        image.push()
14                        image.push("latest")
15                    }
16                }
17            }
18        }
19    }
20}
21

五、常见问题排错锦囊

1Docker 故障排除流程图
2┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
3│   权限问题      │    │   连接问题       │    │   版本问题      │
4│                 │    │                  │    │                 │
5│ • 用户组检查    │    │ • socket挂载     │    │ • API版本       │
6│ • SELinux配置   │    │ • 文件权限       │    │ • 客户端兼容    │
7└─────────────────┘    └──────────────────┘    └─────────────────┘
8        │                        │                        │
9        ▼                        ▼                        ▼
10┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
11│ usermod -aG     │    │ 检查挂载路径     │    │ 设置环境变量    │
12│ docker $USER    │    │ 验证文件存在     │    │ 降级客户端      │
13└─────────────────┘    └──────────────────┘    └─────────────────┘
14

Q1: docker.sock 权限被拒绝

现象Got permission denied while trying to connect to the Docker daemon socket

解决方案详解

1# 检查当前用户是否在 docker 组中
2groups $USER
3
4# 如果不在,添加到 docker 组
5sudo usermod -aG docker $USER
6
7# 重新登录或执行
8newgrp docker
9

Q2: 容器内无法访问 docker.sock

现象:容器内执行 docker ps 提示 Cannot connect to the Docker daemon

解决方案详解

1# 确保正确挂载了 socket
2docker run -v /var/run/docker.sock:/var/run/docker.sock docker:cli docker ps
3
4# 检查容器内的 socket 文件权限
5docker run -v /var/run/docker.sock:/var/run/docker.sock alpine ls -la /var/run/docker.sock
6

Q3: SELinux 阻止访问

现象:在 CentOS/RHEL 系统上,即使权限正确也无法访问

解决方案详解

1# 临时禁用 SELinux(不推荐)
2sudo setenforce 0
3
4# 或者添加 SELinux 标签
5docker run -v /var/run/docker.sock:/var/run/docker.sock:Z docker:cli docker ps
6

Q4: Docker API 版本不匹配

现象client version 1.40 is too new. Maximum supported API version is 1.39

解决方案详解

1# 设置 API 版本环境变量
2export DOCKER_API_VERSION=1.39
3docker ps
4
5# 或在容器中设置
6docker run -e DOCKER_API_VERSION=1.39 -v /var/run/docker.sock:/var/run/docker.sock docker:cli docker ps
7

总结

docker.sock 是 Docker 强大功能和灵活性的基石,但也是一个需要被严格管控的"潘多拉魔盒"。掌握它的正确使用姿势,是每一位 Docker 用户的必修课。

核心原则回顾:

  • 最小权限: 永远不要给予不必要的权限。对于容器,优先考虑无 sock 挂载的方案。
  • 用户隔离: 使用 docker 组管理用户权限,而不是粗暴地修改 sock 文件权限。
  • 安全代理: 在必须暴露 API 的场景,使用 docker-socket-proxy 等工具作为安全中间层。
  • 持续审计: 定期检查哪些容器、哪些用户有权访问 Docker API。

正确理解和使用 docker.sock,将帮助你在享受 Docker 带来便利的同时,构筑坚实的安全防线。


推荐阅读

参考资料


Docker 通信核心:docker.sock 完全指南》 是转载文章,点击查看原文


相关推荐


自定义Spring Boot Starter项目并且在其他项目中通过pom引入使用
劝导小子2025/10/19

1、创建starter项目 我电脑只有JDK 8,但是创建项目的时候最低只能选择17,后续创建完后去修改即可 2、项目结构 删除主启动类Application:Starter不需要启动类删除配置文件application.properties:Starter不需要自己的配置文件删除test里面的测试启动类 在resources下创建META-INF文件夹 3、修改JDK 修改成JDK8,如果你有更高的版本请切换 4、配置pom.xml <?xml version="1


RabbitMQ消息传输中Protostuff序列化数据异常的深度解析与解决方案
Mr.45672025/10/18

目录 问题背景 环境配置 使用的依赖 测试对象 初始代码(有问题的版本) 问题分析 1. 初步排查 2. 关键发现 3. RabbitTemplate的默认行为分析 4. SimpleMessageConverter的处理机制 深入理解消息转换 消息转换器的层次结构: 而直接发送 Message: 解决方案 方案1:直接使用Message对象(推荐) 方案2:配置自定义MessageConverter 问题根因总结 经验教训 结论 最后最后附上序列化工具:


Apache Doris 与 ClickHouse:运维与开源闭源对比
SelectDB技术团队2025/10/16

引言 在当今数据驱动的商业环境中,OLAP(在线分析处理)数据库的选择对企业的数据分析能力和运维成本有着深远影响。Apache Doris 和 ClickHouse 作为业界领先的高性能 OLAP 数据库,各自在不同场景下展现出独特优势。 Apache Doris 以其优秀的宽表查询能力、多表 JOIN 性能、实时更新、search 以及湖加速特性而著称。ClickHouse 同样在宽表处理方面表现出色,其丰富的分析函数库和高性能单表聚合能力备受青睐。 然而,从运维角度来看,两者在存算分离


统一高效图像生成与编辑!百度&新加坡国立提出Query-Kontext,多项任务“反杀”专用模型
AI生成未来2025/10/15

论文链接:https://arxiv.org/pdf/2509.26641 亮点直击 Query-Kontext,一种经济型集成多模态模型(UMM),能够将视觉语言模型(VLMs)中的多模态生成推理与扩散模型执行的高保真视觉渲染相分离。 提出了一种三阶段渐进式训练策略,该策略逐步将 VLM 与越来越强大的扩散生成器对齐,同时增强它们在生成推理和视觉合成方面的各自优势。 提出了一种精心策划的数据集收集方案,以收集真实、合成和经过仔细筛选的开源数据集,涵盖多样的多模态参考到图像


微美全息(NASDAQ:WIMI)融合区块链+AI+IoT 三大技术,解锁物联网入侵检测新范式
爱看科技2025/10/14

在全面数字化转型的浪潮中,区块链、网络安全、人工智能与机器学习不再是孤立的技术概念,而是相互交织、共同推动行业进步的强大引擎。这些技术的紧密结合,特别是在物联网(IoT)领域的应用,正引领着一场前所未有的安全、效率与智能化变革。   实际,区块链技术以其去中心化、安全性和不可篡改性,为物联网数据存储和共享提供了全新的解决方案。而人工智能与机器学习技术的应用,使得物联网系统具备了自我学习和优化的能力。机器学习算法能够分析海量数据,识别出潜在的安全威胁或性能瓶颈,为系统提供精准的决策支持。


基于旗鱼算法优化卷积神经网络结合长短期记忆网络与注意力机制(CNN-LSTM-Attention)的风电场发电功率预测
智能算法研学社(Jack旭)2025/10/12

基于旗鱼算法优化卷积神经网络结合长短期记忆网络与注意力机制(CNN-LSTM-Attention)的风电场发电功率预测 文章目录 基于旗鱼算法优化卷积神经网络结合长短期记忆网络与注意力机制(CNN-LSTM-Attention)的风电场发电功率预测1.CNN原理2.LSTM原理3.注意力机制4.CNN-LSTM-Attention5.风电功率预测5.1 数据集6.基于旗鱼算法优化的CNN-LSTM-Attention7.实验结果8.Matlab代码 1.CNN原理 卷积神经


C++ const 用法全面总结与深度解析
oioihoii2025/10/10

1. const 基础概念 const 关键字用于定义不可修改的常量,是C++中确保数据只读性和程序安全性的核心机制。它可以应用于变量、指针、函数参数、返回值、成员函数等多种场景,深刻影响代码的正确性和性能。 1.1 本质与编译期处理 const变量在编译时会被编译器严格检查,任何修改尝试都会导致编译错误。与C语言不同,C++中的const变量(尤其是全局const)通常不会分配内存,而是直接嵌入到指令中(类似#define),但在以下情况会分配内存: 取const变量地址时 const变量为


php artisan db:seed执行的时候遇到报错
快支棱起来2025/10/9

INFO Seeding database. Illuminate\Database\QueryException SQLSTATE[42S22]: Column not found: 1054 Unknown column 'email_verified_at' in 'field list' (Connection: mysql, SQL: insert into users (name, email, email_verified_at, password, remember_token,


apache POI 万字总结:满足你对报表一切幻想
大鱼七成饱2025/10/7

背景 国庆期间接了个兼职,处理机构的几张Excel报表。初次沟通,感觉挺简单,接入Easyexcel(FastExcel),然后拼lamda表达式就跑出来了。不过毕竟工作了这些年,感觉没这么简单。后面找业务方详细聊了一次,将需求落到纸面上。逐行研究了下BRD,有点挠头,跑数加各种样式,兼容新老版本,老方案是不行了。综合对比,最终选了老牌的 Apache POI 实现,下面说下为啥选POI,还有POI怎么用,包含样式、公式、动态表头、安全防范、百万级数据导入导出等功能。 一、技术选型 如果实现该


【转载】前验光师如何通过聪明模仿而非蛮干构建月收入3.5万美元的SaaS应用
是魔丸啊2025/10/6

转载 大多数人都认为你需要在科技领域拥有突破性的想法才能成功。 Samuel Rondot的想法与众不同。他的整个行动手册建立在一个简单的规则上:不要重新发明轮子——只要让它变得1%更好。 这种心态帮助他辞去了验光师的工作,从零开始自学编程,并推出了三个现在每月收入3.5万美元的SaaS应用。 以下是他如何做到的。 从验光师到自学程序员 Samuel从未计划成为一名程序员。几年前,他在眼镜行业工作,完全没有编程经验。 什么改变了?他想重建一个自己正在使用的Instagram工具——这一次,完全靠

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0