[英]Why docker container already set network_mode:“host” and the public still can access from “http://ip:port”
[英]Unable to connect container port from localhost when network_mode: “bridge” (docker-compose)
這是我docker-compose.yml
yml version: '2' services: admin_db: build: context: . dockerfile: postgres.dockerfile args: - DB_NAME=admin_db - DB_USER=admin - DB_PASSWORD=admin_pass network_mode: "default" admin: build: context: . dockerfile: admin.dockerfile args: - UID=$UID - GID=$GID - UNAME=$UNAME command: /bin/bash depends_on: - admin_db ports: - "8000:8000" links: - admin_db network_mode: "bridge"
如果使用networking_mode:“bridge”,我應該可以從http://127.0.0.1:8000/
:// http://127.0.0.1:8000/
到http://127.0.0.1:8000/
random-ip:8000
訪問我的應用程序(admin),但是目前,我只能通過random-ip:8000
訪問它本地主機。 當networking_mode是“host”時,我能夠http://127.0.0.1:8000/
訪問,但是我無法鏈接容器。 有兩種解決辦法嗎? - 鏈接容器 - 從localhost在http://127.0.0.1:8000/上運行的應用程序
如果由於某些未知原因,正常鏈接不起作用,您可以始終創建另一個橋接網絡並直接連接到該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
希望有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.