Docker Community Forums

Share and learn in the Docker community.

Libnetwork golang vendoring

In writing a docker network driver, I’m now getting “multiple definition” link errors because I need to import “github.com/docker/libnetwork” as well as “github.com/vishvananda/netlink” for example, as do most other examples of docker network drivers; libnetwork vendors netlink, and golang’s static linking causes duplicate symbols in my binary. As far as I understand it, libraries should not vendor other libraries; only applications should be doing this.

What’s the best method of resolving this? For now, I’m manually removing github.com/docker/libnetwork/vendor/github.com/vishvananda after ‘go get -u’.