關於docker容器訪問的主機的端口問題


docker容器需要訪問主機的,不能使用127.0.0.1,127.0.0.1訪問的是docker容器不是主機;
docker容器創建時會分配一個主機ip,可在主機使用命令 docker inspect 9f025896a9ec 查看容器的相關信息;其中的 "Gateway" 對應的ip地址,就是主機的ip地址,訪問主機的服務應該使用這個地址來訪問;
需要注意的是,主機開啟了防火牆的,要把訪問的端口打開,不然容器是無法訪問主機的。

舉個栗子:現在我在容器中安裝了一個nginx,容器ID為9f025896a9ec,然后反向代理到主機的8080端口。

  1. 先在主機使用命令 docker inspect 9f025896a9ec 打印容器的信息,
    找到"Gateway"對應的為容器中對應主機的ip【這里假設為:172.1.0.1】,
    找到"IPAddress"對應的容器的ip【172.1.0.2】;
  2. 進入容器 docker exec -it 9f025896a9ec /bin/bash
  3. 在容器中配置nginx.conf,反向代理的地址設置為 http://172.1.0.1:8080
  4. 退出容器exit,在主機上重啟容器中的nginx:docker restart 9f025896a9ec;
  5. 開放端口8080給容器 firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=172.1.0.2 port port=8080 protocol=tcp accept'
  6. 重載防火牆 firewall-cmd --reload;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM