anchor.diff:          pubkey => PubKey,
           privkey => PrivKey,
           exposed_ports => ExposedPorts,
  -        local_ports => LocalPorts
  +        local_ports => LocalPorts,
  +        sockets => Sockets
       },
   
       NetworkSpecs = maps:get(networks, Spec, ?DEFAULT_NETWORKS),
  
positive.code:     ok.
  
  -spec start_node(node_state()) -> node_state().
  start_node(#{container_id := ID, hostname := Name} = NodeState) ->
      aest_docker_api:start_container(ID),
      log(NodeState, "Container ~p [~s] started", [Name, ID]),
      NodeState.
  
  -spec stop_node(node_state(), stop_node_options()) -> node_state().
  stop_node(#{container_id := ID, hostname := Name} = NodeState, Opts) ->
  
negative.code:     {ok, Socket} = gen_tcp:listen(0, [{reuseaddr, true}]),
      {ok, Port} = inet:port(Socket),
      gen_tcp:close(Socket),
      {ok, Port, Socket}.
  
  allocate_ports(Labels) -> allocate_ports(Labels, #{}, []).
  
  allocate_ports([], Ports, Sockets) -> {Ports, Sockets};
  allocate_ports([Label | Labels], Ports, Sockets) ->
      {ok, Port, Socket} = free_port(),
      allocate_ports(Labels, Ports#{Label => Port}, [Socket | Sockets]).
  
  
  format(Fmt, Args) ->
  