When instantiating DockerClient
object whether through docker.DockerClient(base_url='unix://var/run/docker.sock')
or docker.from_env()
, inside constructor APIClient
object is instantiated:
def __init__(self, *args, **kwargs):
self.api = APIClient(*args, **kwargs)
APIClient
itself is inheriting a bunch of classes:
class APIClient(
requests.Session,
BuildApiMixin,
ConfigApiMixin,
ContainerApiMixin,
DaemonApiMixin,
ExecApiMixin,
ImageApiMixin,
NetworkApiMixin,
PluginApiMixin,
SecretApiMixin,
ServiceApiMixin,
SwarmApiMixin,
VolumeApiMixin)
One of the classes it inherits is ContainerApiMixin
that exposes methods for interacting with containers, similar to docker container
CLI.
As you can see, everything you can do through CLI is accessible through api
object inside DockerClient
object.
So, the answer to your question is:
client.api.port('<container_id>', <port>)
Resource: source code