複数のポートがあるコンテナがあります9001
。このDockerの外部にあるポート()の1つにリモートとしてアクセスしたいと思います。
172.17.0.1
172.19.0.23
192.168.1.131
それについて検索したところ、expose port
キーワードが見つかりました。実行しましたが、機能しませんでした。
Dockerポートを公開して、コンテナーを外部からアクセスできるようにする方法
リファレンス
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.sh
は、9001
ポートでのZMQの作成など、いくつかの操作を実行します。
以前に許可するポートを設定しました。 $ ufw allow 9001
どんな助けでもいただければ幸いです。
以下の手順で問題が解決しました:
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]
コメントを追加