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.