docker-composeを使用してdocker / containerの外部にコンテナーポートを公開するにはどうすればよいですか?

ベニヤミンジャファリ

複数のポートがあるコンテナがあります9001。このDockerの外部にあるポート()の1つにリモートとしてアクセスしたいと思います

  • 私のDockerIPは次のとおりです。 172.17.0.1
  • 私のコンテナIPは次のとおりです。 172.19.0.23
  • 私のサーバーIPは次のとおりです。 192.168.1.131

それについて検索したところ、expose portキーワードが見つかりました。実行しましたが、機能しませんでした。

Dockerポートを公開して、コンテナーを外部からアクセスできるようにする方法
リファレンス


これは私のdocker-composeファイルです:

version: '3'

services:
  nginx:
      image: nginx:latest
      container_name: nginx
      ports:
        - "8010:8010"

      volumes:
        - .:/code
        - ./nginx/default.conf:/etc/nginx/conf.d/default.conf

      links:
        - ivms

      restart: unless-stopped

  ivms:
      build: .
      container_name: ivms
      command: bash bashes/createDB.sh
      volumes:
        - .:/code
      expose:
        - "8010"
        - "9001"  # exposed disired port
      ports:
        - "9001:9001"

私はdocker-composeファイルの上で次のように実行します: $ docker-compose up -d

  • しかし、それを使用している、server_IP:9001 --> 192.168.1.131:9001またはdocker_IP:9001 --> 172.17.0.1:9001アクセスできない場合(リモートモードまたはローカルモードで)
  • しかし、container_IP:9001 --> 172.19.0.23:9001これを使用すると、ローカルで機能します。

アクセスできるようにするにはどうすればよいserver_IP:9001 --> 192.168.1.131:9001ですか?


[]:

  • IncreateDB.sh9001ポートでのZMQの作成など、いくつかの操作を実行ます

  • 以前に許可するポートを設定しました。 $ ufw allow 9001

  • Ubuntu16.04とUbuntu-Server16.04で試してみました

どんな助けでもいただければ幸いです。

ベニヤミンジャファリ

以下の手順で問題が解決しました:

ZMQアプリ(ivmsコンテナー内)で、サーバーIPから接続をバインドするために次のように使用しました。

import zmq

if __name__ == '__main__':
    context = zmq.Context()
    socket = context.socket(zmq.SUB)
    socket.setsockopt(zmq.SUBSCRIBE, "")
    socket.bind("tcp://192.168.1.131:9001")  # doesn't work with server or docker IP

    while True:
        data = socket.recv_json()

それは以下のようにのみ機能していました:

socket.bind("tcp://192.168.1.131:9001")  # works, but can't access as remote

今、私はこの行を次のように編集しました:

socket.bind("tcp://*:9001")  # Works both locally and remotely.

そしてこれは私のdocker-compose.yml構成です:

version: '3'

services:
  nginx:
      image: nginx:latest
      container_name: nginx
      ports:
        - "8010:8010"

      volumes:
        - .:/code
        - ./nginx/default.conf:/etc/nginx/conf.d/default.conf

      links:
        - ivms

      restart: unless-stopped

  ivms:
      build: .
      container_name: ivms
      command: bash bashes/createDB.sh
      volumes:
        - .:/code
      expose:
        - "8010"
      ports:
        - "9001:9001"

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ