As a comment above states, you need to forward the port on your VM.
When you run a VM the network on the box generally has little/no access to the outside world unless you grant it. Normally you'll be able to make a connection from the VM to the outside, but to listen on ports is another step.
Let's say your hostname is myhostname, when you put myhostname:8080 in the browser it will get rejected as your box doesn't have anything running. Now let's say your VM is running a server on 8080 and you want to link the two. You need to follow the instructions below so that when you hit myhostname:8080 your native OS will see that the VM is listening to that port. The request will get passed to the VM which will then in turn forward it to your jupyter instance.
These are the best instructions I found:
https://www.howtogeek.com/122641/how-to-forward-ports-to-a-virtual-machine-and-use-it-as-a-server/
Here are some screenshots of my setup. I ran 'python -m http.server 8000' to have a server to connect to.
Set up your VM like this: VM setup
Connect from your native OS to the virtual server like this:
Hitting the server from your native OS
Other users on your domain should be able to connect via :8000. You can get that on windows by typing 'hostname' on the command line.
Let's say you want to expose your http server to other users on port 80, but still run on port 8000 from within your server, you simply change the portforwarding config int he screenshot so that Host Port is 80, rather than 8000.
Hope this helps