如何从局域网上的另一台机器访问Docker容器

我正在使用“Docker for Mac”并在主机上运行容器。 我可以通过主机上的本地主机访问容器。 但它不能从局域网上的其他系统。

容器是nginx web服务器,可以在localhost:80上访问,但是不能从同一局域网上的其他系统访问。

我希望其他系统能够访问主机上的容器。

编辑1:添加docker-composeconfiguration和“docker info”命令输出

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信息

 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 

用来启动容器的命令:

docker-up up -d nginx

谢谢

你没有列出你正在使用的命令。 这对我有用。 我可以从我的iphone(同样的Wi – Finetworking)使用我的Mac的IP地址访问它。

 docker run -d --name myserver -p 80:80 nginx:1.10-alpine 

编辑:样本撰写文件。

创build一个桥梁networking(主干),这是你的服务的内部。 他们都通过这个networking进行交stream。 唯一的外部接入点是通过你的nginx代理(端口:部分)。

不要在任何地方使用IP地址(例如在nginx.conf中)。 只使用服务名称。 例如使用oracle:1521连接到oracle。

find其他地方存储您的HTML文件。 〜/ docker / .docker只能被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