wie man Ports mit docker-py bindet
Ich versuche, einen Docker-Container mit docker-py (Version 1.3.1) zu starten. Ich möchte die internen Ports des Containers verschiedenen Ports zuordnen, kann sie jedoch nicht ordnungsgemäß anzeigen.
Ich mache das so:
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"]
Im vorliegenden Fall lautet die Ausgabe wie folgt:
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': ''}]}}
docker ps sagt mir:
$ 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
How, wenn ich es Abbildungen 3000 -> 3000, 2424 -> 2424 und 2480 -> 2480 gebe, gibt es
$ 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
Der Punkt ist, dass ich von der Kommandozeile aus den Container mit den richtigen Portzuordnungen starten kann. Das is
docker run -d -p 3001: 3000 -p 2425: 2424 -p 2481: 2480 -v / dbfiles / test: / opt / db localhost: 5000 / test: test /initdb.s
gibt das gewünschte Ergebnis.
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
Allerdings kann ich mit docker-py einfach nicht herausfinden, wie man die Ports verschiedenen Portnummern zuordnet. Was vermisse ich