关于docker容器访问的主机的端口问题
docker容器需要访问主机的,不能使用127.0.0.1,127.0.0.1访问的是docker容器不是主机;
docker容器创建时会分配一个主机ip,可在主机使用命令 docker inspect 9f025896a9ec 查看容器的相关信息;其中的 "Gateway" 对应的ip地址,就是主机的ip地址,访问主机的服务应该使用这个地址来访问;
需要注意的是,主机开启了防火墙的,要把访问的端口打开,不然容器是无法访问主机的。
举个栗子:现在我在容器中安装了一个nginx,容器ID为9f025896a9ec,然后反向代理到主机的8080端口。
- 先在主机使用命令
docker inspect 9f025896a9ec
打印容器的信息,
找到"Gateway"对应的为容器中对应主机的ip【这里假设为:172.1.0.1】,
找到"IPAddress"对应的容器的ip【172.1.0.2】; - 进入容器
docker exec -it 9f025896a9ec /bin/bash
; - 在容器中配置nginx.conf,反向代理的地址设置为 http://172.1.0.1:8080;
- 退出容器exit,在主机上重启容器中的nginx:
docker restart 9f025896a9ec
; - 开放端口8080给容器
firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=172.1.0.2 port port=8080 protocol=tcp accept'
- 重载防火墙
firewall-cmd --reload
;