{"id":16940712,"url":"https://github.com/greenpau/docker-ovn-driver","last_synced_at":"2025-10-12T02:08:52.565Z","repository":{"id":83535374,"uuid":"153925571","full_name":"greenpau/docker-ovn-driver","owner":"greenpau","description":"Docker Plugin v2 Network Driver for Open Virtual Network (OVN)","archived":false,"fork":false,"pushed_at":"2020-04-14T20:45:27.000Z","size":2415,"stargazers_count":6,"open_issues_count":0,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-05-22T23:34:35.219Z","etag":null,"topics":["docker","docker-plugin","libnetwork","ovn","ovs"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/greenpau.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-10-20T16:30:22.000Z","updated_at":"2022-11-08T11:10:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"87e84e7e-025e-430f-9d62-e3d48b6d53d0","html_url":"https://github.com/greenpau/docker-ovn-driver","commit_stats":{"total_commits":3,"total_committers":2,"mean_commits":1.5,"dds":"0.33333333333333337","last_synced_commit":"5a9693812a19c182b2e1e32a4480a4fe7d4367af"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenpau%2Fdocker-ovn-driver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenpau%2Fdocker-ovn-driver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenpau%2Fdocker-ovn-driver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenpau%2Fdocker-ovn-driver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/greenpau","download_url":"https://codeload.github.com/greenpau/docker-ovn-driver/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247935347,"owners_count":21020822,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-plugin","libnetwork","ovn","ovs"],"created_at":"2024-10-13T21:07:45.054Z","updated_at":"2025-10-12T02:08:47.546Z","avatar_url":"https://github.com/greenpau.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# docker-ovn-driver\n\nDocker Plugin v2 Network Driver for Open Virtual Network (OVN).\n\n[![OVN Network Driver Operations](https://raw.githubusercontent.com/forward53/docker-ovn-driver/master/docs/images/forward53.docker-ovn-driver.diagram.png \"OVN Network Driver Operations\")](https://raw.githubusercontent.com/forward53/docker-ovn-driver/master/docs/images/forward53.docker-ovn-driver.diagram.png)\n\n## Getting Started\n\n### Install the driver from Docker Hub\n\nFirst, install the driver:\n\n```bash\ndocker plugin install forward53/docker-ovn-driver --disable --grant-all-permissions\nlatest: Pulling from forward53/docker-ovn-driver\ncf67279099ab: Download complete\nDigest: sha256:0fafc210877961449d790b63e0ba61ffa2cda7c999acb102790903d642199455\nStatus: Downloaded newer image for forward53/docker-ovn-driver:latest\nInstalled plugin forward53/docker-ovn-driver\n```\n\nValidate that the driver is installed but disables:\n\n```bash\ndocker plugin ls\nID                  NAME                                DESCRIPTION                                     ENABLED\n759fb140951d        forward53/docker-ovn-driver:latest   Docker network driver for Open Virtual Net...   false\n```\n\nNext, if necessary, enable debugging:\n\n```bash\ndocker plugin set forward53/docker-ovn-driver DEBUG=1\n```\n\nFinally, enable the driver:\n\n```bash\ndocker plugin enable forward53/docker-ovn-driver\n```\n\nValidate that the driver is installed and enabled:\n\n```bash\ndocker plugin ls\nID                  NAME                                DESCRIPTION                                     ENABLED\n759fb140951d        forward53/docker-ovn-driver:latest   Docker network driver for Open Virtual Net...   true\n```\n\n### Install the driver from source\n\nThe following command builds, installs, and enabled the driver locally, i.e. without a registry:\n\n```bash\nsudo make plugin\n```\n\n## Create a network\n\nCreate a network with the networking maintained by `forward53/docker-ovn-driver` network driver:\n\n```bash\ndocker network create -d forward53/docker-ovn-driver:latest --subnet=10.10.10.0/23 --gateway=10.10.10.1 --ip-range 10.10.10.32/27 --opt vrf=default public\n```\n\nNext, a user may place a container on the network:\n\n```\ndocker run -d -t --net=public --name=box1 centos\n```\n\n## Uninstall the driver\n\nThe following commands disable and remove the driver:\n\n```bash\ndocker plugin disable forward53/docker-ovn-driver\ndocker plugin rm forward53/docker-ovn-driver\n```\n\nAlternatively, when having access to the source, run the following command:\n\n```bash\nsudo make clean\n```\n\n## Troubleshooting\n\nThe first step in troubleshooting is reviewing `docker` logs:\n\n```bash\njournalctl -u docker -r --no-pager -n 20\n```\n\nNext, review the driver's log:\n\n```bash\ntail -20 /var/log/openvswitch/docker-ovn-driver.log\n```\n\nThe driver requires that the following command succeeds prior to enabling the driver:\n\n```bash\novs-vsctl --timeout=5 -vconsole:off get Open_vSwitch . external_ids:ovn-nb\n```\n\nThe following `curl` queries the state of the network driver:\n\n```bash\ncurl http://0.0.0.0:9105/NetworkDriver.Database\n```\n\nThe following command allows read/write access to Docker interface by `greenpau` user:\n\n```bash\nsudo setfacl -m user:greenpau:rw /var/run/docker.sock\n```\n\n## Development\n\nNote: Use `curl -X POST http://127.0.0.1:9105/\u003cPATH\u003e -d'\u003cPAYLOAD\u003e'` for testing.\n\nWhen a user creates a network (i.e. `docker network create`), the driver receives\nthe following POST request to `/NetworkDriver.CreateNetwork`:\n\n```json\n{\n    \"NetworkID\": \"b5082ded43d3b362c2b913dae6ee17a8afb51ef0e2a2e19db122d4b5fea67142\",\n    \"Options\": {\n        \"com.docker.network.enable_ipv6\": false,\n        \"com.docker.network.generic\": {\n            \"vrf\": \"default\"\n        }\n    },\n    \"IPv4Data\": [{\n        \"AddressSpace\": \"LocalDefault\",\n        \"Gateway\": \"10.30.30.1/23\",\n        \"Pool\": \"10.30.30.0/23\"\n    }],\n    \"IPv6Data\": []\n}\n```\n\nWhen a user starts a container (i.e. `docker start CONTAINER_ID`), the driver receives\nthe following POST requests.\n\nFirst, `/NetworkDriver.CreateEndpoint` with:\n\n```json\n{\n    \"NetworkID\": \"b5082ded43d3b362c2b913dae6ee17a8afb51ef0e2a2e19db122d4b5fea67142\",\n    \"EndpointID\": \"2f2497db76a577c0f0ff0f8056b657a003bd7636d7fd984b875d5ad9a5d3fedf\",\n    \"Interface\": {\n        \"Address\": \"10.30.30.32/23\",\n        \"AddressIPv6\": \"\",\n        \"MacAddress\": \"\"\n    },\n    \"Options\": {\n        \"com.docker.network.endpoint.exposedports\": [],\n        \"com.docker.network.portmap\": []\n    }\n}\n```\n\nSecond, `/NetworkDriver.Join` with:\n\n```json\n{\n    \"NetworkID\": \"b5082ded43d3b362c2b913dae6ee17a8afb51ef0e2a2e19db122d4b5fea67142\",\n    \"EndpointID\": \"2f2497db76a577c0f0ff0f8056b657a003bd7636d7fd984b875d5ad9a5d3fedf\",\n    \"SandboxKey\": \"/var/run/docker/netns/fc2ac21230fc\",\n    \"Options\": {\n        \"com.docker.network.endpoint.exposedports\": [],\n        \"com.docker.network.portmap\": []\n    }\n}\n```\n\nThird, `/NetworkDriver.ProgramExternalConnectivity` with:\n\n```json\n{\n    \"NetworkID\": \"b5082ded43d3b362c2b913dae6ee17a8afb51ef0e2a2e19db122d4b5fea67142\",\n    \"EndpointID\": \"2f2497db76a577c0f0ff0f8056b657a003bd7636d7fd984b875d5ad9a5d3fedf\",\n    \"Options\": {\n        \"com.docker.network.endpoint.exposedports\": [],\n        \"com.docker.network.portmap\": []\n    }\n}\n```\n\nFourth and final, `/NetworkDriver.EndpointOperInfo` with:\n\n```json\n{\n    \"NetworkID\": \"b5082ded43d3b362c2b913dae6ee17a8afb51ef0e2a2e19db122d4b5fea67142\",\n    \"EndpointID\": \"2f2497db76a577c0f0ff0f8056b657a003bd7636d7fd984b875d5ad9a5d3fedf\"\n}\n```\n\nWhen a user stops a container (i.e. `docker stop CONTAINER_ID`), the driver receives\nthe following POST requests:\n\n1. `/NetworkDriver.RevokeExternalConnectivity`\n2. `/NetworkDriver.Leave`\n3. `/NetworkDriver.DeleteEndpoint`\n\nThe payload of the requests is `NetworkID` and `EndpointID`.\n\n```json\n{\n    \"NetworkID\": \"b5082ded43d3b362c2b913dae6ee17a8afb51ef0e2a2e19db122d4b5fea67142\",\n    \"EndpointID\": \"2f2497db76a577c0f0ff0f8056b657a003bd7636d7fd984b875d5ad9a5d3fedf\"\n}\n```\n\nImportantly, when a user removes a container (i.e. `docker rm CONTAINER_ID`), the\ndriver does not receive any requests.\n\nWhen a user deletes a network (i.e. `docker network rm NETWORK_ID`), the driver\nreceives POST request to `/NetworkDriver.DeleteNetwork` with the following payload:\n\n```json\n{\n    \"NetworkID\": \"b5082ded43d3b362c2b913dae6ee17a8afb51ef0e2a2e19db122d4b5fea67142\"\n}\n```\n\nReference:\n* [Docker Plugin Config Version 1 of Plugin V2](https://docs.docker.com/engine/extend/config/#config-field-descriptions)\n\nAlso, note that the plugin includes the following `openvswitch` packages:\n\n* `openvswitch-\u003cVERSION\u003e.el7.x86_64.rpm`\n* `openvswitch-ovn-common-\u003cVERSION\u003e.el7.x86_64.rpm`\n* `python-openvswitch-\u003cVERSION\u003e.el7.noarch.rpm`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgreenpau%2Fdocker-ovn-driver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgreenpau%2Fdocker-ovn-driver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgreenpau%2Fdocker-ovn-driver/lists"}