4

ポートで公開されたコンテナー化された Web アプリの実行を模倣しようとしています

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が、どちらも役に立ちませんでした。

更新:これはある種のバグのようです。回避策は、TCP を明示的に指定することです。

container = c.create_container('kermit/hellonode', name='hello', ports=[(1337, 'tcp')])
4

1 に答える 1

3

これが機能しないことを確認できます。

この方法は問題なく機能します。役に立つ場合があります。

container = c.create_container('kermit/hellonode', name='hello', ports=[1337])
c.start(container, publish_all_ports=True)
info = c.inspect_container(container)
host_port = info['NetworkSettings']['Ports']['1337'][0]['HostPort']

その後、次の場所でサービスにアクセスできます0.0.0.0:<host_port>

于 2014-01-14T16:42:17.487 に答える