网络插件开发
Docker 支持自定义网络插件,实现特殊的网络需求。
插件类型
网络驱动插件
实现自定义网络驱动,如:
- 软件定义网络 (SDN)
- 云网络集成
- 特殊网络协议
插件接口
网络插件需要实现以下接口:
CreateNetwork- 创建网络DeleteNetwork- 删除网络CreateEndpoint- 创建端点DeleteEndpoint- 删除端点Join- 加入网络Leave- 离开网络
开发示例
Go 插件示例
go
package main
import (
"github.com/docker/go-plugins-helpers/network"
)
func main() {
driver := &MyNetworkDriver{}
handler := network.NewHandler(driver)
handler.ServeUnix("my-network-driver", 0)
}
type MyNetworkDriver struct{}
func (d *MyNetworkDriver) CreateNetwork(req *network.CreateNetworkRequest) error {
// 实现网络创建逻辑
return nil
}
func (d *MyNetworkDriver) DeleteNetwork(req *network.DeleteNetworkRequest) error {
// 实现网络删除逻辑
return nil
}
// ... 实现其他接口安装插件
sh
# 将插件放到插件目录
cp my-network-driver /usr/lib/docker/plugins/
# 或使用 Docker 插件
docker plugin install my-network-plugin使用插件
sh
# 创建使用插件的网络
docker network create --driver my-network-driver my-network
# 使用网络
docker run --network my-network nginx