Docker 插件是进程外扩展,可为 Docker 引擎添加功能。
本文档描述了 Docker 引擎插件 API。要查看 Docker Engine 管理的插件信息,请参阅Docker Engine 插件系统。
Docker插件是什么
插件是在与 docker 守护进程相同或不同的主机上运行的进程,它通过将文件放置在同一 docker 主机上的插件目录之一中的插件发现中来注册自己。
插件具有人类可读的名称,它们是简短的小写字符串。例如,flocker或weave。
插件可以在容器内部或外部运行。目前建议在容器外运行它们。
查找插件
每当用户或容器尝试按名称使用插件时,Docker 都会通过在插件目录中查找插件来发现插件。
插件目录中可以放置三种类型的文件。
.sock 文件是 UNIX 域套接字。
.spec文件是包含 URL 的文本文件,例如unix:///other.sock或tcp://localhost:8080。
.json 文件是包含插件的完整 json 规范的文本文件。
带有UNIX域套接字文件的插件必须在同一个docker主机上运行,而带有 spec 或 json 文件的插件如果指定了远程 URL,则可以在不同的主机上运行。
UNIX域套接字文件必须位于下/run/docker/plugins,而规范的文件可以在位于/etc/docker/plugins或/usr/lib/docker/plugins。
文件名(不包括扩展名)决定了插件名称。
例如,flocker插件可能会在 处创建一个 UNIX 套接字 /run/docker/plugins/flocker.sock。
如果您想将定义彼此隔离,您可以将每个插件定义到一个单独的子目录中。例如,您可以在容器flocker下创建套接字/run/docker/plugins/flocker/flocker.sock并仅安装/run/docker/plugins/flocker在flocker容器内。
Docker 总是首先搜索 unix 套接字/run/docker/plugins。它检查下的规范或 json 文件 /etc/docker/plugins以及/usr/lib/docker/plugins套接字是否不存在。一旦找到具有给定名称的第一个插件定义,目录扫描就会停止。
JSON 规范
这是插件的 JSON 格式:
该TLSConfig字段是可选的,只有存在此配置时才会验证 TLS。