I'm using Docker Desktop for Mac and running a container on my host machine. I'm able to access the container via localhost on host machine. But it is not available from other systems on lan.
The container is nginx web server, which is accessible on localhost:80
but not accessible from other systems on same LAN network.
I want other systems to be able to access the container on host machine.
Edit 1: Adding docker-compose configuration and "docker info" command output
version: '2'
services:
nginx:
image: artifactory.service.dev:5000/nginx:latest
network_mode: host
ports:
- "80:80"
- "10001-10020:10001-10020"
- "8080:8080"
volumes:
- ~/docker/.docker/nginx/html:/usr/share/nginx/html
redis:
image: artifactory.service.dev:5000/redis:latest
restart: always
ports:
- "6379:6379"
activemq:
image: artifactory.service.dev:5000/rmohr/activemq:5.11.1
restart: always
ports:
- "61613:61613"
- "61616:61616"
- "8161:8161"
oracle:
image: artifactory.service.dev:5000/oracle-12c:latest
restart: always
ports:
- "1521:1521"
volumes:
- ~/docker/.docker/oracle:/tmp/oracle:ro
privileged: true
docker info
Containers: 4
Running: 3
Paused: 0
Stopped: 1
Images: 38
Server Version: 1.12.1
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 310
Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: host bridge null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 4.4.19-moby
Operating System: Alpine Linux v3.4
OSType: linux
Architecture: x86_64
CPUs: 6
Total Memory: 11.71 GiB
Name: moby
ID: LBLG:7UQC:W67Q:J744:QAHE:4JLX:QRVB:2QQD:PTB2:MV75:HD6Y:FROD
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
File Descriptors: 50
Goroutines: 72
System Time: 2016-09-01T06:51:40.063477725Z
EventsListeners: 1
No Proxy: *.local, 169.254/16, *.dev
Registry: https://index.docker.io/v1/
Experimental: true
Insecure Registries:
artifactory.service.dev:5000
127.0.0.0/8
command used to start the container:
docker-compose up -d nginx
You didn't list what command you're using. This works for me. I can access it using the ip address of my mac from my iphone (same wi-fi network).
docker run -d --name myserver -p 80:80 nginx:1.10-alpine
Edit: sample compose file.
Create a bridge network (backbone) that is internal to your services. They all communicate through this network. The only external access point is through your nginx proxy (ports: section).
Do not use ip address anywhere (eg in nginx.conf). Only use service names. Eg use oracle:1521
to connect to oracle.
Find somewhere else to store your html files. ~/docker/.docker should only be used by docker.
version: "2"
services:
nginx:
image: artifactory.service.dev:5000/nginx:latest
ports:
- "80:80"
- "10001-10020:10001-10020"
- "8080:8080"
volumes:
- ~/docker/.docker/nginx/html:/usr/share/nginx/html
networks:
- backbone
redis:
image: artifactory.service.dev:5000/redis:latest
restart: always
expose:
- "6379"
networks:
- backbone
activemq:
image: artifactory.service.dev:5000/rmohr/activemq:5.11.1
restart: always
expose:
- "61613"
- "61616"
- "8161"
networks:
- backbone
oracle:
image: artifactory.service.dev:5000/oracle-12c:latest
restart: always
expose:
- "1521"
volumes:
- ~/docker/.docker/oracle:/tmp/oracle:ro
privileged: true
networks:
- backbone
networks:
backbone:
driver: bridge
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