Я пытаюсь имитировать запуск контейнерной веб-приложение подвергается в какой-то портКак запустить основной контейнер веб-приложений в docker-py?
sudo docker run -d -p 1338:1337 kermit/hellonode
в Python с использованием docker-py. До сих пор я получил этот код для запуска экземпляра:
container = c.create_container('kermit/hellonode', name='hello')
c.start(container, port_bindings={1337: ('0.0.0.0', 1338)})
Но я не могу получить доступ к контейнеру в общественном порте 1338 (который работает в обычном режиме с первой командой) - я получаю отказ в соединении ошибок. Кто-нибудь знает, если мне не хватает какой-либо опции, чтобы заставить вызов Python создать функциональный доступный контейнер?
Осмотрев контейнер говорит мне, что порт настроен как это должно быть:
$ sudo docker port hello 1337
0.0.0.0:1338
Я также экспериментировал с ports=[1337]
опции в create_container
вызова, но это не помогло.
Обновление: похоже, что это some kind of bug. Обходной путь заключается в том, чтобы указать TCP явно:
container = c.create_container('kermit/hellonode', name='hello', ports=[(1337, 'tcp')])
Спасибо, что работал. Поскольку вы также подтвердили это поведение, я [сообщил о проблеме для docker-py] (https://github.com/dotcloud/docker-py/issues/141). – metakermit
ОК, я обновил свой вопрос с помощью другого обходного пути, предложенного @mpetazzoni - таким образом можно указать желаемый публичный порт вручную. – metakermit