简体   繁体   中英

Unable to setup networking to access docker container IPs from outside?

Context:
I have a web server hosting a UI from which users can request for emulator instances for my product. Each emulator instance is a webapp running on nodejs. When a user requests an emulator instance from the UI, I spawn a docker container. I would like to return to the user an IP address(+port) from which this emulator container can be accessed.
Note: Presently, docker and the webserver facing the user are running on the same system.

Problems:
1) The default container on the docker0 network is accessible only with it's local IP address on the host. eg http://172.17.0.5 . I can't access the container with http://localhost:32768 (container was started with -P and was assigned the port 32768). I get a message that the site can't be reached.

2) I can't use the docker host network driver because the emulator uses ports internally which I don't want to expose in the host network

3) I don't want to use the macvlan driver because I will be using up too many IPs.

Is it possibly to map various ports on the host to IPs on the docker0 subnet? If yes, how do I go about this? If this is possible I could expose the host IP and the container specific port to the user.

What is best way to give users access to the containers?

How about a nginx container acting as a proxy? Make your containers have same name always.

Serve new app instance:

docker run -d --rm --name=static_prefix__unique_id your_image

Have a wildcard domain:

unique_id.yourdomain.com

Or simply:

yourdomain.com/unique_id

You can dynamically proxy the request (I assume you're using port 3000 for the nodejs app):

proxy_pass http://static_prefix__$extractedNameFromRequestUri:3000

Docker will do the hard job for you and route traffic from outside to the static_prefix__unique_id container.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM