Package Information
Available Nodes
Documentation
n8n-nodes-docker
n8n-nodes-docker 是一个面向 n8n 自托管实例 的 Docker community node 包。
当前版本:1.0.0
这个版本对应路线图中的 Phase 6 核心版:
Docker主节点覆盖container、image、network、volume、systemDocker Files覆盖容器文件导入导出和image save/loadDocker Trigger覆盖 Docker event 触发、游标回放、去重和重连Docker Build覆盖 tar-basedbuild与importUnix Socket、TCP、TLS、SSH四种连接模式可用- 已有自动化测试覆盖 transport、节点执行、长流、tar/build 工具、SSH 生命周期,以及可选的真实 Docker daemon / 本地 SSH 集成路径
这个包的定位是 Docker automation toolkit for n8n,重点是把 Docker 的常用资源管理、文件流、事件流和构建链路系统化接到工作流里。registry、Swarm、Compose-like 抽象和智能补全仍留在后续版本,不属于 1.0.0 的公开能力面。
节点族
Docker
负责容器、镜像、网络、卷和 daemon metadata 的 JSON / 文本型操作,
也承接 Linux 容器内的文本文件 helper 操作。
这是唯一保留为 AI-usable 的节点。Docker Files
负责copyTo、copyFrom、export、image save、image load。
这个节点专门隔离 binary / tar 工作流。Docker Trigger
负责 Docker event 监听、回放、去重和重连。Docker Build
负责 tar-based image build / import,以及长时间运行的流式构建输出。
当前能力面
已实现的资源与操作:
container:list,inspect,create,update,start,stop,restart,remove,logs,stats,top,wait,exec,readTextFile,listFiles,searchText,writeTextFile,replaceExactTextimage:list,inspect,pull,tag,remove,history,prune,save,load,build,importnetwork:list,inspect,create,connect,disconnect,delete,prunevolume:list,inspect,create,delete,prunesystem:ping,info,version,df,events
流式与长任务增强:
container:logs支持snapshot/followForDurationcontainer:readTextFile/listFiles/searchText/writeTextFile/replaceExactText
提供 Linux-only 的 container 文本文件 helper 能力system:events支持bounded/resumeFromCursorDocker Trigger支持 replay、dedupe、reconnectDocker Build支持 streamed build/import output、超时、取消和 continue-on-fail
这些 convenience operation 的边界是:
- 只承诺 Linux 容器 语义
listFiles、searchText、writeTextFile(createParentDirectories=true)依赖容器内存在/bin/shlistFiles依赖常见用户态工具如find、sort、sedsearchText优先使用rg,缺失时回退到grep,两条路径都按容器文件系统真实内容搜索,不遵守 ignore 规则;Limit会在 helper 层生效,而不是只裁剪最终返回 itemslistFiles/searchText的Working Path不存在时,会返回节点级错误而不是 OCIcwd细节listFiles在显式指定隐藏目录作为Working Path时,仍会把它当作遍历根;Include Hidden = false只过滤该根下的隐藏后代readTextFile/replaceExactText只接受有效 UTF-8 文本,遇到非法 UTF-8 会返回节点级错误replaceExactText会保留目标文件原有的统一换行风格,不会把 CRLF 文件整体改写成 LF
文本文件 helper 迁移说明
如果你之前在本机 n8n 里用 workflow 形式维护这些 tool:
tool_read_container_filetool_list_container_filestool_search_container_texttool_apply_container_patch
现在建议直接迁移到 Docker 主节点的公开 operation:
tool_read_container_file->container:readTextFiletool_list_container_files->container:listFilestool_search_container_text->container:searchTexttool_apply_container_patch->container:writeTextFile/container:replaceExactText
注意:
- 新 operation 的返回结构按节点风格重做,不再兼容旧 workflow 的
ok/errorCode/message契约 tool_apply_container_patch的 mode-based 接口已拆成两个 operation- 旧 workflow 更像上层 tool 封装;节点内置后,建议直接在工作流里调用社区节点原生操作
连接方式
Docker API 凭证当前支持:
Unix SocketTCPTLSSSH
SSH 模式当前约束:
- 只支持 私钥认证
- 目标是远端 Unix socket,默认路径
/var/run/docker.sock - 支持自定义
SSH Port和Remote Socket Path passphrase字段会同时用于 TLS key 和加密 SSH 私钥
安全边界
Docker daemon 的写权限基本等价于宿主机高权限控制,所以这个包默认按“高风险基础设施节点”来设计。
建议默认约束:
- 本地优先用
Unix Socket - 远程优先用
SSH或TLS - 如果必须暴露远程 TCP,优先要求 TLS
- 生产环境优先通过 docker-socket-proxy 缩小 API 面
- 只读场景优先使用
Access Mode = Read Only
更完整的生产建议见 自托管安全建议。
示例工作流
仓库内置了 3 个样例工作流:
导入前通常需要你自己替换:
- 社区节点 credential 名称
Read Binary File的本地路径- 目标镜像名、容器名、网络和 volume 参数
凭证与执行策略
Docker API 凭证默认行为:
API Version = auto时会自动协商 Docker Engine API versionAccess Mode = Read Only仅允许只读资源操作和事件/日志读取Access Mode = Full Control才允许 create/update/remove/pull/tag/build/import/file copy,以及writeTextFile/replaceExactText这类写操作- 由于 n8n 的静态 credential test 不适合 Unix socket 和 SSH stream-local forwarding,这个包统一使用 node-level credential test
文档导航
本地开发
安装依赖并跑基础检查:
pnpm install
pnpm lint
pnpm test
如果你要补跑真实 Docker daemon 集成:
RUN_DOCKER_INTEGRATION=1 node --test tests/docker.integration.test.cjs
如需把这个包接到本地 n8n 做联调:
pnpm dev
只构建产物:
pnpm build
如果你想在本机临时拉起一个 SSH 测试目标并跑可选的 SSH 集成测试:
pnpm test:ssh:local
这个脚本会:
- 用当前用户启动一个只监听
127.0.0.1的临时sshd - 生成一次性密钥
- 把本机 Docker Unix socket 通过 SSH stream-local forwarding 暴露给测试
- 只覆盖 SSH 集成分支,不会顺带启用普通 Docker 集成分支
如果你已经有现成的 SSH Docker 测试目标,也可以直接手动设置环境变量:
RUN_DOCKER_SSH_INTEGRATION=1 \
DOCKER_SSH_HOST=127.0.0.1 \
DOCKER_SSH_PORT=2222 \
DOCKER_SSH_USERNAME=docker \
DOCKER_SSH_PRIVATE_KEY_PATH=/path/to/id_rsa \
DOCKER_SSH_REMOTE_SOCKET_PATH=/var/run/docker.sock \
pnpm test
上面这条命令会执行基础测试套件并启用 SSH 集成分支;如果你希望 tests/docker.integration.test.cjs 里的普通 Docker 集成和 SSH 集成都不出现 skip,可以直接同时带上两个开关:
RUN_DOCKER_INTEGRATION=1 \
RUN_DOCKER_SSH_INTEGRATION=1 \
DOCKER_SSH_HOST=127.0.0.1 \
DOCKER_SSH_PORT=2222 \
DOCKER_SSH_USERNAME=docker \
DOCKER_SSH_PRIVATE_KEY_PATH=/path/to/id_rsa \
DOCKER_SSH_REMOTE_SOCKET_PATH=/var/run/docker.sock \
node --test tests/docker.integration.test.cjs
默认测试不会要求本机存在 SSH Docker 测试目标。pnpm test:ssh:local 依赖本机存在 sshd、ssh、ssh-keygen 和可用的 Docker daemon,并要求 DOCKER_SSH_USERNAME 与当前本机用户一致。
仓库结构
n8n-nodes-docker/
├── credentials/
│ └── DockerApi.credentials.ts
├── docs/
│ ├── architecture.md
│ ├── operations-matrix.md
│ ├── publishing.md
│ ├── roadmap.md
│ └── self-hosted-security.md
├── examples/
│ └── workflows/
├── nodes/
│ ├── Docker/
│ ├── DockerBuild/
│ ├── DockerFiles/
│ └── DockerTrigger/
├── tests/
└── package.json
发布提示
- npm 包名当前为
@faithleysath/n8n-nodes-docker - 发布前确认
package.json > homepage和package.json > repository.url - 如果要在本机手动校验 npm 身份或执行手工发布,再运行
npm login/npm whoami