Networking 当网络模式为“时,无法从本地主机连接容器端口”;桥“;(docker撰写)
这是我的Networking 当网络模式为“时,无法从本地主机连接容器端口”;桥“;(docker撰写),networking,docker,localhost,containers,docker-compose,Networking,Docker,Localhost,Containers,Docker Compose,这是我的docker compose.yml yml 版本:“2” 服务: 管理数据库: 建造: 上下文:。 dockerfile:postgres.dockerfile args: -DB\u NAME=admin\u DB -DB_USER=admin -DB_PASSWORD=管理员通行证 网络模式:“默认” 管理员: 建造: 上下文:。 dockerfile:admin.dockerfile args: -UID=$UID -GID=$GID -UNAME=$UNAME 命令:/bin/
docker compose.yml
yml
版本:“2”
服务:
管理数据库:
建造:
上下文:。
dockerfile:postgres.dockerfile
args:
-DB\u NAME=admin\u DB
-DB_USER=admin
-DB_PASSWORD=管理员通行证
网络模式:“默认”
管理员:
建造:
上下文:。
dockerfile:admin.dockerfile
args:
-UID=$UID
-GID=$GID
-UNAME=$UNAME
命令:/bin/bash
取决于:
-行政数据库
端口:
- "8000:8000"
链接:
-行政数据库
网络模式:“网桥”
如果使用网络模式:“网桥”,我应该能够在http://127.0.0.1:8000/
来自localhost,但目前,我只能从localhost在随机ip:8000
上访问它。
我能够http://127.0.0.1:8000/
当网络模式为“主机”时访问,但我无法链接容器。
有什么办法可以同时拥有这两种东西吗?
-链接容器
-从localhost运行的应用程序如果由于未知原因,正常链接无法工作,您可以始终创建另一个桥接网络并直接连接到该docker映像。通过这样做,运行映像的IP地址将始终相同 我会这样编辑它:
version: '2'
services:
admin_db:
build:
context: .
dockerfile: postgres.dockerfile
args:
- DB_NAME=admin_db
- DB_USER=admin
- DB_PASSWORD=admin_pass
networks:
back_net:
ipv4_address: 11.0.0.2
admin:
build:
context: .
dockerfile: admin.dockerfile
args:
- UID=$UID
- GID=$GID
- UNAME=$UNAME
command: /bin/bash
depends_on:
- admin_db
ports:
- "8000:8000"
extra_hosts:
- "admin_db:11.0.0.2"
networks:
back_net:
ipv4_address: 11.0.0.3
networks:
back_net:
driver: bridge
driver_opts:
com.docker.network.enable_ipv6: "false"
com.docker.network.bridge.name: "back"
ipam:
driver: default
config:
- subnet: 11.0.0.0/24
gateway: 11.0.0.1
希望有帮助 如果由于某种未知原因,正常链接无法工作,您可以始终创建另一个桥接网络,并直接连接到该docker映像。通过这样做,运行映像的IP地址将始终相同 我会这样编辑它:
version: '2'
services:
admin_db:
build:
context: .
dockerfile: postgres.dockerfile
args:
- DB_NAME=admin_db
- DB_USER=admin
- DB_PASSWORD=admin_pass
networks:
back_net:
ipv4_address: 11.0.0.2
admin:
build:
context: .
dockerfile: admin.dockerfile
args:
- UID=$UID
- GID=$GID
- UNAME=$UNAME
command: /bin/bash
depends_on:
- admin_db
ports:
- "8000:8000"
extra_hosts:
- "admin_db:11.0.0.2"
networks:
back_net:
ipv4_address: 11.0.0.3
networks:
back_net:
driver: bridge
driver_opts:
com.docker.network.enable_ipv6: "false"
com.docker.network.bridge.name: "back"
ipam:
driver: default
config:
- subnet: 11.0.0.0/24
gateway: 11.0.0.1
希望有帮助 如果您停止所有服务的“网络模式”,会发生什么?默认情况下,应该按照您希望的方式工作。(当然,使用不同的网络模式会让事情变得更复杂。)如果配置中没有“网络模式”,那么我只能在
random ip:8000
上访问我的应用程序。你是在MacOS、Windows上运行还是在使用docker机器?如果你从所有服务中退出“网络模式”,会发生什么?默认情况下,应该按照您希望的方式工作。(当然,使用不同的网络模式会让事情变得更复杂。)如果配置中没有“网络模式”,那么我只能在随机ip:8000
上访问我的应用程序。你是在MacOS、Windows上运行还是使用docker机器?