Mac 10.11.5 here. I am specifically trying to install Docker for Mac (not Docker Toolbox or any other offering). I followed all the instructions on their Installation page, and everything was going fine until they ask you to try running an nginx server (Step 3. Explore the application and run examples).
Running docker run hello-world
worked beautifully with no problems at all. I was able to see the correct console output that was expected for that image.
However, they then ask you to try running an nginx instance:
docker run -d -p 80:80 --name webserver nginx
I ran this, and got no errors. Console output was expected:
Unable to find image 'nginx:latest' locally latest: Pulling from library/nginx
51f5c6a04d83: Pull complete
a3ed95caeb02: Pull complete
51d229e136d0: Pull complete
bcd41daec8cc: Pull complete
Digest: sha256:0fe6413f3e30fcc5920bc8fa769280975b10b1c26721de956e1428b9e2f29d04
Status: Downloaded newer image for nginx:latest
ae8ee4595f47e7057e527342783d035b224afd17327b057331529e2820fe2b61
So then I ran docker ps
:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ae8ee4595f47 nginx "nginx -g 'daemon off" 12 seconds ago Up 10 seconds 0.0.0.0:80->80/tcp, 443/tcp webserver
So far so good. But then I open up my browser and point it to http://localhost
and I get (in Chrome):
Any ideas where I'm going awry? I waited 5 mins just to give nginx/docker ample time to start up, but that doesn't change anything.
For tracking purposes, the related GitHub issue:
https://github.com/docker/for-mac/issues/393
On MacOS go to the whale in the taskbar > Preferences > Daemon > Advanced. You can also start the Docker daemon manually and configure it using flags. This can be useful for troubleshooting problems. Many specific configuration options are discussed throughout the Docker documentation.
Can't connect to the Docker daemon Mac? First, check if the Docker engine is running: sudo service docker status. If the Docker engine isn't working, start it with the following command: sudo service docker start. After you start the Docker engine, try running the docker-compose build command again.
If nginx is running in a container then your site is going to be 100% dead to the world while Docker isn't running. Users will get a connection error. When nginx is installed directly on your host you can serve a 503 maintenance page that doesn't depend on Docker or any containers running.
corrected
The image exposes 80 as the httpd port https://github.com/nginxinc/docker-nginx/blob/11fc019b2be3ad51ba5d097b1857a099c4056213/mainline/jessie/Dockerfile#L25
So using -p 80:80
should work and does work for me:
docker run -p 80:80 nginx
172.17.0.1 - - [22/Aug/2016:17:26:32 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36" "-"
So most probably you either run a httpd container on the host so the port cannot be binded ( should be visible through the start ) or you probably have an issue with localhost
- does 127.0.0.1
work? You might have a issue with ipv6
then
Or better using a docker-compose.yml file
version: '2'
services:
webserver:
image: nginx
ports:
- '80:80'
and the start it with docker-compose up
- you can know easily add other services, like a tomcat, puma server, or a FPM upstream, whatever app you might have.
Try
curl -XGET `docker-machine ip`:80
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With