Ben*_*ari 5 port zeromq pyzmq docker docker-compose
我有一个具有多个端口的容器,我想以9001远程方式访问此Docker外部的端口之一()。
172.17.0.1172.19.0.23192.168.1.131我已经搜索过该expose port关键字,但找到了关键字,但没有成功。
如何公开泊坞窗口,使您的容器外部访问
参考
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"
Run Code Online (Sandbox Code Playgroud)
我在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?
[ 注意 ]:
在createDB.sh运行中,需要执行多种操作,例如在9001port 上创建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()
Run Code Online (Sandbox Code Playgroud)
它的工作原理如下:
socket.bind("tcp://192.168.1.131:9001") # works, but can't access as remote
Run Code Online (Sandbox Code Playgroud)
socket.bind("tcp://*:9001") # Works both locally and remotely.
Run Code Online (Sandbox Code Playgroud)
这是我的 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"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4134 次 |
| 最近记录: |