как привязать порты с помощью docker-py

Я пытаюсь запустить Docker-контейнер с помощью Docker-py (Версия 1.3.1). Я хочу сопоставить внутренние порты контейнера с разными портами, но не могу правильно их выставить.

Я делаю это так:

def start_container(client, host_config, image_tagged_name, command):
    print ("create_host_config", host_config.binds, host_config.port_bindings)
    the_host_config = create_host_config(binds         = host_config.binds,
                                         port_bindings = host_config.port_bindings);
    the_ports = host_config.port_bindings.values();
    print ("create_container", image_tagged_name, command, the_ports, the_host_config)
    cont_id = client.create_container(image=image_tagged_name, command=command, ports=the_ports, host_config=the_host_config)["Id"]

В данном случае результат выглядит следующим образом:

create_host_config ['/dbfiles/test:/opt/db'] {3001: 3000, 2425: 2424, 2481: 2480}
create_container test:test ./initdb.sh [3000, 2424, 2480] {'Binds': ['/dbfiles/test:/opt/db'], 'PortBindings': {'3001/tcp': [{'HostPort': '3000', 'HostIp': ''}], '2425/tcp': [{'HostPort': '2424', 'HostIp': ''}], '2481/tcp': [{'HostPort': '2480', 'HostIp': ''}]}}

Докер PS говорит мне:

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                    NAMES
169ad3ae0f63        test:test           "./initdb.sh"            5 minutes ago       Up 5 minutes        2424/tcp, 2480/tcp, 3000/tcp                                             silly_pasteur

Однако, если я даю ему сопоставления 3000 -> 3000, 2424 -> 2424 и 2480 -> 2480, это дает

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                    NAMES
cba483673bdd        test:test           "./initdb.sh"            53 minutes ago      Up 5 minutes        0.0.0.0:2424->2424/tcp, 0.0.0.0:2480->2480/tcp, 0.0.0.0:3000->3000/tcp   stupefied_ptolemy

Дело в том, что из командной строки я могу запустить контейнер с правильными сопоставлениями портов. То есть

docker run -d -p 3001: 3000 -p 2425: 2424 -p 2481: 2480 -v / dbfiles / test: / opt / db localhost: 5000 / test: test /initdb.sh

дает желаемый результат.

CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS              PORTS                                                                    NAMES
7c1580e0ace9        localhost:5000/test:test         "/initdb.sh"             8 seconds ago       Up 6 seconds        0.0.0.0:2425->2424/tcp,     0.0.0.0:2481->2480/tcp, 0.0.0.0:3001->3000/tcp   backstabbing_brahmagupta

Однако с docker-py я просто не могу понять, как сопоставить порты с разными номерами портов. Чего мне не хватает?

Ответы на вопрос(2)

Ваш ответ на вопрос