远程服务器的docker容器中运行web后端,在本机显示

在服务器上创建了一个docker环境,在其中运行web后端
我用的是flask框架,如果在服务器上运行下列程序,在本地浏览器输入 服务器IP:5000 即可出现Hello World!


from flask import Flask
app = Flask(__name__)
 
@app.route('/')
def hello_world():
    return 'Hello World!'
 
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

但是在docker中运行上述代码的话,想在本地用同样的IP打开页面,却显示无法访问。
在这里插入图片描述
原因在于,创建docker容器时,默认会改变IP地址。
docker创建有三种网络类型:bridge, none, host

bridge:桥接网络

默认情况下启动的Docker容器,都是使用
bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启下,Docker的IP地址就变了。

none:无指定网络

使用 --network=none ,docker 容器就不会分配局域网的IP

host: 主机网络

使用 --network=host,此时,Docker 容器的网络会附属在主机上,两者是互通的。
例如,在容器中运行一个Web服务,监听8080端口,则主机的8080端口就会自动映射到容器中。

启动 Docker的时候,用 --network 参数,可以指定网络类型

看到这想必知道,如果想在本地用服务器的IP打开页面,需要在创建docker时指定网络类型为host,这样容器的IP就和服务器的IP地址一样了:

docker run -it --name test1 --network host centos:latest /bin/bash
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值