Какая эквивалентная команда для docker порта CONTAINER в docker -py - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь автоматизировать docker сервер, используя docker -py. Необходимо проверить, проверяет ли URL-адрес хоста python. Следовательно, мне нужна эквивалентная команда в python для docker port container.
docker port container_id

import docker
client = docker.from_env()
print(client.port('c03ebfb53a7d', 80))

1 Ответ

0 голосов
/ 31 марта 2020

При создании экземпляра объекта DockerClient через docker.DockerClient(base_url='unix://var/run/docker.sock') или docker.from_env() внутри конструктора APIClient создается объект :

def __init__(self, *args, **kwargs):
    self.api = APIClient(*args, **kwargs)

APIClient наследует набор классов :

class APIClient(
    requests.Session,
    BuildApiMixin,
    ConfigApiMixin,
    ContainerApiMixin,
    DaemonApiMixin,
    ExecApiMixin,
    ImageApiMixin,
    NetworkApiMixin,
    PluginApiMixin,
    SecretApiMixin,
    ServiceApiMixin,
    SwarmApiMixin,
    VolumeApiMixin)

Один из классов, которые он наследует, - ContainerApiMixin, который предоставляет методы для взаимодействия с контейнерами, аналогично docker container CLI.

Как видите, все, что вы можете сделать через CLI, доступно через api объект внутри DockerClient объекта.

Итак, ответ на ваш вопрос: :

client.api.port('<container_id>', <port>)

Ресурс : исходный код

...