gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:10:06 25 4
gpt4 key购买 nike

我正在使用 Mac 版 Docker Desktop 并在我的主机上运行容器。我可以通过主机上的本地主机访问容器。但局域网上的其他系统无法使用它。

该容器是 nginx Web 服务器,可在 localhost:80 上访问,但无法从同一 LAN 网络上的其他系统访问。

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

编辑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 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

用于启动容器的命令:

docker-compose up -d nginx

最佳答案

您没有列出您正在使用的命令。这对我有用。我可以使用我的 iPhone 上的 Mac 的 IP 地址(相同的 Wi-Fi 网络)访问它。

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

编辑:示例撰写文件。

创建服务内部的桥接网络(主干网络)。他们都通过这个网络进行通信。唯一的外部访问点是通过您的 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 - 如何从局域网内的另一台机器访问Docker容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39261743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com