0

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 [email protected]
  RUN git clone -q https://github.com/docker-in-practice/todo.git
  WORKDIR todo
  RUN npm install > /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.

2 Answers 2

2

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.

4
  • I am using xhyve I got ip and made request using mapped port, but I have running more machines how to get other machines ip? docker-machine ls shows only one machine ip address Apr 25, 2019 at 13:49
  • If you have xhyve, then I don't believe you need docker-machine.
    – BMitch
    Apr 25, 2019 at 14:05
  • I am confused here, if I am not using VM than I can use xhyve but is docker-machine not required for both? as I used brew install docker docker-compose docker-machine xhyve docker-machine-driver-xhyve which installing both softwares. Apr 26, 2019 at 7:17
  • If you install directly from docker itself rather than brew, the latest releases run on top of xhyve with a LinuxKit based VM that is fairly transparent, much of the time you don't realize you're in a VM as you do with docker-machine.
    – BMitch
    Apr 26, 2019 at 11:31
0

That shows that your docker service is not yet running . Try start the service

open -a Docker
1
  • Well I figure out, and even compared to Docker.app and now shift to docker.app as brew installation and docker.app has not much difference to better to latest tools. May 6, 2019 at 12:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.