GossNet.Discovery.Docker
0.10.0
dotnet add package GossNet.Discovery.Docker --version 0.10.0
NuGet\Install-Package GossNet.Discovery.Docker -Version 0.10.0
<PackageReference Include="GossNet.Discovery.Docker" Version="0.10.0" />
<PackageVersion Include="GossNet.Discovery.Docker" Version="0.10.0" />
<PackageReference Include="GossNet.Discovery.Docker" />
paket add GossNet.Discovery.Docker --version 0.10.0
#r "nuget: GossNet.Discovery.Docker, 0.10.0"
#:package GossNet.Discovery.Docker@0.10.0
#addin nuget:?package=GossNet.Discovery.Docker&version=0.10.0
#tool nuget:?package=GossNet.Discovery.Docker&version=0.10.0
GossNet.Discovery.Docker
Docker-based node discovery for GossNet.Protocol.
Ships separately so the Docker client dependency stays out of the core package.
Target frameworks: netstandard2.0, net8.0, net10.0.
Installation
dotnet add package GossNet.Discovery.Docker
Usage
Label each gossip container and put them on a shared user-defined network:
services:
node:
image: my-gossnet-app
labels:
app: gossnet
networks:
- gossnet-net
networks:
gossnet-net:
using GossNet.Discovery.Docker;
using GossNet.Protocol;
var dockerOptions = new DockerDiscoveryOptions
{
Label = "app=gossnet",
NetworkName = "gossnet-net"
};
var configuration = new GossNetConfiguration
{
Hostname = Environment.GetEnvironmentVariable("CONTAINER_IP")!,
Port = 9055,
DiscoveryProviderFactory = cfg => new DockerNodeDiscovery(cfg, dockerOptions)
};
using var node = new GossNetNode<MyMessage>(configuration);
node.Start();
DiscoveryProviderFactory is used rather than DiscoveryProvider because the provider
needs the node's own address and port to exclude itself — the container running the node
carries the same label as its peers.
The container needs access to the Docker socket to query the daemon:
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
Options
| Option | Default | Description |
|---|---|---|
Label |
required | Label identifying the gossip containers (key=value or a bare key) |
Endpoint |
local daemon | Docker endpoint; Unix socket on Linux/macOS, named pipe on Windows |
NetworkName |
first address found | Which network's address to use |
Port |
the node's own port | Port neighbours listen on |
RunningOnly |
true |
Only return running containers |
CacheDuration |
30 seconds | How long a resolved neighbour list is reused |
Set NetworkName whenever containers join more than one network. A multi-homed
container has an address on each, and without a name the first one found is used, which
is ambiguous. Containers not attached to the named network are skipped rather than
guessed at.
Containers without an address are skipped — a container can be listed before it is
attached to a network. If the daemon cannot be reached, a NodeDiscoveryException is
thrown rather than returning an empty neighbour list.
License
MIT. See LICENSE.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Docker.DotNet (>= 3.125.15)
- GossNet.Protocol (>= 0.10.0)
-
net10.0
- Docker.DotNet (>= 3.125.15)
- GossNet.Protocol (>= 0.10.0)
-
net8.0
- Docker.DotNet (>= 3.125.15)
- GossNet.Protocol (>= 0.10.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.