Docker not exposing port on mojave mac I used brew to install docker, docker-machine and docker-compose. Everything is working, but when I use expose to map port on my host machine, it is not working.

When I ssh in docker machine service is running perfectly inside docker machine, but outside nothing coming up.

My software versions are 

Docker version 18.09.5, build e8ff056

docker-machine version 0.16.1, build cce350d

docker-compose version 1.24.0


and I am using xhyve for virtualization

Here is my Dockerfile

FROM node
  LABEL maintainer xyz@gmail.com
  RUN git clone -q https://github.com/docker-in-practice/todo.git
  WORKDIR todo
  RUN npm install &gt; /dev/null
  EXPOSE 8000
  CMD ["npm", "start"]


I use following command to run docker 

docker run -i -t -p 8000:8000 --name example1 todoapp


I have read many article and noticed there is issues in docker and mac related, but not sure how can I solve it. Please any suggestion. I am not using mac docker app due to system resources limit.

I also read somewhere that I should use sudo than it should work, but I tried and get following error

docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?


I think sudo will require when port is below 1000 but my port is 8000 so I don't think I need sudo here.
Most likely the port is published on the VM and you are trying to connect to your laptop's IP and not seeing it. Newer versions of docker that use xhyve include some networking tricks to publish the port all the way to your laptop, but docker-machine with VirtualBox does not do this.

You can lookup the IP of your VM with docker-machine ls or see it in the variable echo $DOCKER_HOST and connect to port 8000 on that IP to reach your application.