关于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;

你可能感兴趣的