Sebastiaan van Stijn 173d16b233 Merge pull request #44193 from thaJeztah/libnetwork_cleanup 2 年之前
..
bitseq cd381aea56 libnetwork: fix empty-lines (revive) 2 年之前
cluster 0f6cb61f2d Switch from x/net/context -> context 7 年之前
cmd 4f08346686 fix formatting of "nolint" tags for go1.19 3 年之前
config 267108e113 libnetwork/config: rename ParseConfigOptions() to New() 2 年之前
datastore cd381aea56 libnetwork: fix empty-lines (revive) 2 年之前
diagnostic 55fd77f724 set ReadHeaderTimeout to address G112: Potential Slowloris Attack (gosec) 2 年之前
discoverapi a1ed5b7be2 fix nits in comments and log 8 年之前
docs 147173b099 libnetwork: remove consul-related code and tests 3 年之前
driverapi 427ad30c05 libnetwork: remove unused "testutils" imports 4 年之前
drivers cd381aea56 libnetwork: fix empty-lines (revive) 2 年之前
drvregistry 427ad30c05 libnetwork: remove unused "testutils" imports 4 年之前
etchosts cd381aea56 libnetwork: fix empty-lines (revive) 2 年之前
idm 427ad30c05 libnetwork: remove unused "testutils" imports 4 年之前
internal 427ad30c05 libnetwork: remove unused "testutils" imports 4 年之前
ipam 173d16b233 Merge pull request #44193 from thaJeztah/libnetwork_cleanup 2 年之前
ipamapi c23eae3114 libnetwork/ipamapi: godoc fixes 3 年之前
ipams cd381aea56 libnetwork: fix empty-lines (revive) 2 年之前
ipamutils df650a1aeb panic() instead of logrus.Fatal() in init funcs 3 年之前
iptables cd381aea56 libnetwork: fix empty-lines (revive) 2 年之前
netlabel 427ad30c05 libnetwork: remove unused "testutils" imports 4 年之前
netutils 2b70006e3b Merge pull request #42777 from thaJeztah/update_go_1.17 3 年之前
networkdb cd381aea56 libnetwork: fix empty-lines (revive) 2 年之前
ns 9a4025d79f Revert "Adjust LockOSThread" 6 年之前
options 2f1c382a6d golangci-lint: update to v1.49.0 2 年之前
osl cd381aea56 libnetwork: fix empty-lines (revive) 2 年之前
portallocator b4b2a0323b libnetwork/portallocator: un-export consts for defaults 3 年之前
portmapper c55a4ac779 refactor: move from io/ioutil to io and os package 3 年之前
resolvconf 49de15cdcc libnetwork/resolvconf: removed unused GetIfChanged() and GetLastModified() 2 年之前
support 4b981436fe Fixup libnetwork lint errors 4 年之前
testutils 52c1a2fae8 gofmt GoDoc comments with go1.19 3 年之前
types 073f8df0fe libnetwork/types: remove TransportPort.FromString() as it's unused 3 年之前
.dockerignore 62ebaeac7a Added back dockerignore 7 年之前
.gitignore 62ebaeac7a Added back dockerignore 7 年之前
CHANGELOG.md a06f1b2c4e Spelling fixes 7 年之前
README.md a384f83e7a libnetwork: remove CircleCI config and code 4 年之前
agent.go cd381aea56 libnetwork: fix empty-lines (revive) 2 年之前
agent.pb.go 7d7412f957 Gracefully remove LB endpoints from services 7 年之前
agent.proto 7d7412f957 Gracefully remove LB endpoints from services 7 年之前
controller.go cd381aea56 libnetwork: fix empty-lines (revive) 2 年之前
default_gateway.go cd381aea56 libnetwork: fix empty-lines (revive) 2 年之前
default_gateway_freebsd.go a0a473125b Fix libnetwork imports 4 年之前
default_gateway_linux.go a0a473125b Fix libnetwork imports 4 年之前
default_gateway_windows.go a0a473125b Fix libnetwork imports 4 年之前
drivers_freebsd.go a8a8bd1e42 libnetwork/config: remove "Experimental" and "Debug" options 2 年之前
drivers_ipam.go a0a473125b Fix libnetwork imports 4 年之前
drivers_linux.go a8a8bd1e42 libnetwork/config: remove "Experimental" and "Debug" options 2 年之前
drivers_windows.go a8a8bd1e42 libnetwork/config: remove "Experimental" and "Debug" options 2 年之前
endpoint.go cd381aea56 libnetwork: fix empty-lines (revive) 2 年之前
endpoint_cnt.go a0a473125b Fix libnetwork imports 4 年之前
endpoint_info.go 4f08346686 fix formatting of "nolint" tags for go1.19 3 年之前
endpoint_info_unix.go 686be57d0a Update to Go 1.17.0, and gofmt with Go 1.17 3 年之前
endpoint_info_windows.go 686be57d0a Update to Go 1.17.0, and gofmt with Go 1.17 3 年之前
endpoint_test.go c55a4ac779 refactor: move from io/ioutil to io and os package 3 年之前
error.go fc4d9bd640 Merge pull request #1616 from chchliang/testnetwork 8 年之前
errors_test.go cd381aea56 libnetwork: fix empty-lines (revive) 2 年之前
firewall_linux.go 968ff5ab44 fix some minor linting issues 3 年之前
firewall_linux_test.go 528428919e libnetwork/config: merge DaemonCfg into Config 2 年之前
firewall_others.go 686be57d0a Update to Go 1.17.0, and gofmt with Go 1.17 3 年之前
libnetwork_internal_test.go cd381aea56 libnetwork: fix empty-lines (revive) 2 年之前
libnetwork_linux_test.go c55a4ac779 refactor: move from io/ioutil to io and os package 3 年之前
libnetwork_test.go cd381aea56 libnetwork: fix empty-lines (revive) 2 年之前
libnetwork_unix_test.go 686be57d0a Update to Go 1.17.0, and gofmt with Go 1.17 3 年之前
libnetwork_windows_test.go b3c883bb2f Skip libnetwork integration tests on Windows 4 年之前
network.go 173d16b233 Merge pull request #44193 from thaJeztah/libnetwork_cleanup 2 年之前
network_unix.go 686be57d0a Update to Go 1.17.0, and gofmt with Go 1.17 3 年之前
network_windows.go 686be57d0a Update to Go 1.17.0, and gofmt with Go 1.17 3 年之前
resolver.go cd381aea56 libnetwork: fix empty-lines (revive) 2 年之前
resolver_test.go cd381aea56 libnetwork: fix empty-lines (revive) 2 年之前
resolver_unix.go 686be57d0a Update to Go 1.17.0, and gofmt with Go 1.17 3 年之前
resolver_windows.go 686be57d0a Update to Go 1.17.0, and gofmt with Go 1.17 3 年之前
sandbox.go 173d16b233 Merge pull request #44193 from thaJeztah/libnetwork_cleanup 2 年之前
sandbox_dns_unix.go cd381aea56 libnetwork: fix empty-lines (revive) 2 年之前
sandbox_dns_windows.go 686be57d0a Update to Go 1.17.0, and gofmt with Go 1.17 3 年之前
sandbox_externalkey.go ffbe62a8f7 sandbox_externalkey.go: split for cross compilation 9 年之前
sandbox_externalkey_unix.go 528428919e libnetwork/config: merge DaemonCfg into Config 2 年之前
sandbox_externalkey_windows.go 686be57d0a Update to Go 1.17.0, and gofmt with Go 1.17 3 年之前
sandbox_store.go a0a473125b Fix libnetwork imports 4 年之前
sandbox_test.go b3c883bb2f Skip libnetwork integration tests on Windows 4 年之前
service.go a0a473125b Fix libnetwork imports 4 年之前
service_common.go cd381aea56 libnetwork: fix empty-lines (revive) 2 年之前
service_common_test.go b3c883bb2f Skip libnetwork integration tests on Windows 4 年之前
service_linux.go 293cfd6c76 Ensure performance tuning is always applied 3 年之前
service_unsupported.go 686be57d0a Update to Go 1.17.0, and gofmt with Go 1.17 3 年之前
service_windows.go 556cb3ae81 Log HNS policylist removal failures 3 年之前
store.go cd381aea56 libnetwork: fix empty-lines (revive) 2 年之前
store_linux_test.go cd381aea56 libnetwork: fix empty-lines (revive) 2 年之前
store_test.go c55a4ac779 refactor: move from io/ioutil to io and os package 3 年之前

README.md

libnetwork - networking for containers

Libnetwork provides a native Go implementation for connecting containers

The goal of libnetwork is to deliver a robust Container Network Model that provides a consistent programming interface and the required network abstractions for applications.

Design

Please refer to the design for more information.

Using libnetwork

There are many networking solutions available to suit a broad range of use-cases. libnetwork uses a driver / plugin model to support all of these solutions while abstracting the complexity of the driver implementations by exposing a simple and consistent Network Model to users.

package main

import (
	"fmt"
	"log"

	"github.com/docker/docker/pkg/reexec"
	"github.com/docker/docker/libnetwork"
	"github.com/docker/docker/libnetwork/config"
	"github.com/docker/docker/libnetwork/netlabel"
	"github.com/docker/docker/libnetwork/options"
)

func main() {
	if reexec.Init() {
		return
	}

	// Select and configure the network driver
	networkType := "bridge"

	// Create a new controller instance
	driverOptions := options.Generic{}
	genericOption := make(map[string]interface{})
	genericOption[netlabel.GenericData] = driverOptions
	controller, err := libnetwork.New(config.OptionDriverConfig(networkType, genericOption))
	if err != nil {
		log.Fatalf("libnetwork.New: %s", err)
	}

	// Create a network for containers to join.
	// NewNetwork accepts Variadic optional arguments that libnetwork and Drivers can use.
	network, err := controller.NewNetwork(networkType, "network1", "")
	if err != nil {
		log.Fatalf("controller.NewNetwork: %s", err)
	}

	// For each new container: allocate IP and interfaces. The returned network
	// settings will be used for container infos (inspect and such), as well as
	// iptables rules for port publishing. This info is contained or accessible
	// from the returned endpoint.
	ep, err := network.CreateEndpoint("Endpoint1")
	if err != nil {
		log.Fatalf("network.CreateEndpoint: %s", err)
	}

	// Create the sandbox for the container.
	// NewSandbox accepts Variadic optional arguments which libnetwork can use.
	sbx, err := controller.NewSandbox("container1",
		libnetwork.OptionHostname("test"),
		libnetwork.OptionDomainname("docker.io"))
	if err != nil {
		log.Fatalf("controller.NewSandbox: %s", err)
	}

	// A sandbox can join the endpoint via the join api.
	err = ep.Join(sbx)
	if err != nil {
		log.Fatalf("ep.Join: %s", err)
	}

	// libnetwork client can check the endpoint's operational data via the Info() API
	epInfo, err := ep.DriverInfo()
	if err != nil {
		log.Fatalf("ep.DriverInfo: %s", err)
	}

	macAddress, ok := epInfo[netlabel.MacAddress]
	if !ok {
		log.Fatalf("failed to get mac address from endpoint info")
	}

	fmt.Printf("Joined endpoint %s (%s) to sandbox %s (%s)\n", ep.Name(), macAddress, sbx.ContainerID(), sbx.Key())
}

Contributing

Want to hack on libnetwork? Docker's contributions guidelines apply.

Copyright and license

Code and documentation copyright 2015 Docker, inc. Code released under the Apache 2.0 license. Docs released under Creative commons.