如何从局域网上的另一台机器访问Docker容器
我正在使用Mac的Docker Desktop,并在主机上运行一个容器。我可以通过主机上的localhost访问容器。但它不能从局域网上的其他系统获得 容器为nginx web服务器,可在如何从局域网上的另一台机器访问Docker容器,docker,docker-container,docker-for-mac,docker-desktop,Docker,Docker Container,Docker For Mac,Docker Desktop,我正在使用Mac的Docker Desktop,并在主机上运行一个容器。我可以通过主机上的localhost访问容器。但它不能从局域网上的其他系统获得 容器为nginx web服务器,可在localhost:80上访问,但不能从同一局域网上的其他系统访问 我希望其他系统能够访问主机上的容器 编辑1:添加docker compose配置和“docker info”命令输出 version: '2' services: nginx: image: artifactory.service
localhost:80
上访问,但不能从同一局域网上的其他系统访问
我希望其他系统能够访问主机上的容器
编辑1:添加docker compose配置和“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-compose up -d nginx
您没有列出正在使用的命令。 这对我有用。我可以从iphone(相同的wi-fi网络)使用mac的ip地址访问它 编辑:示例编写文件 创建服务内部的网桥网络(主干网)。他们都通过这个网络进行通信。唯一的外部访问点是通过nginx代理(端口:部分) 不要在任何地方使用ip地址(例如在nginx.conf中)。仅使用服务名称。例如使用
oracle:1521
连接到oracle
找其他地方存储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
谢谢你的回答。我已经用docker compose配置更新了这个问题,我用它来启动容器,因为它在默认网桥网络上运行。将
network\u mode:host
添加到您的nginx服务定义中(假设您使用的是version:“2”
撰写文件,如果不先转换为version 2)。我用网络模式更新了docker compose配置:主机
仍存在相同问题。本地主机url正在工作,但不来自同一lan网络上的任何系统。我正在使用docker compose的第2版。感谢您的帮助。在上面的帖子中添加编辑行,并添加完整的dockerfile列表。还添加由docker info
打印的内容,以及使用docker compose配置和docker info更新的用于启动服务的命令行(例如:docker compose up-d
)
docker run -d --name myserver -p 80:80 nginx:1.10-alpine
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