port method
Returns the host port mapped to port on containerId.
Inspects the container and reads NetworkSettings.Ports["{port}/tcp"][0].HostPort.
Throws StateError when the port is not mapped.
Implementation
Future<int> port(String containerId, int port) async {
final resp = await _request('GET', '/containers/$containerId/json');
_throwIfError(resp);
final data = resp.bodyJson as Map<String, dynamic>;
final networkSettings = data['NetworkSettings'] as Map<String, dynamic>?;
final ports = networkSettings?['Ports'] as Map<String, dynamic>?;
final key = '$port/tcp';
final bindings = ports?[key] as List<dynamic>?;
if (bindings == null || bindings.isEmpty) {
throw StateError('Port $port not mapped for container $containerId');
}
final binding = bindings.first as Map<String, dynamic>;
return int.parse(binding['HostPort'] as String);
}