docker的网络
我们在使用docker run创建Docker容器时,可以用–network标志 选项指定容器的网络模式,Docker有以下4种网络模式:
host模式:使用 –net=host 指定。
none模式:使用 –net=none 指定。
bridge模式:使用 –net=bridge 指定,默认设置。
container模式:使用 –net=container:NAME_or_ID 指定。
Docker 网络:host模式
docker容器网络bridge
Docker Network—Bridge 模式
爬坑
解决:docker容器内可以访问web应用,端口映射到宿主机却无法访问,错误代码:curl: 56 Recv failure: 连接被对方重设—-xys借鉴该方法解决了问题,具体操作见 uvicorn|更改fastapi服务器运行host和port
本人所用的是flask项目,项目启动默认用的host是127.0.0.1,port端口是5000,而我们docker端口默认映射的host是0.0.0.0,所以需要把flask监听地址改为0.0.0.0
docker curl: (56) Recv failure: 连接被对方重设
docker curl: (56) Recv failure: Connection reset by peer问题解决方法
本机IP地址、 127.0.0.1 和 0.0.0.0 的区别—-(xys:举例值得一看,这也是为啥docker中的fastapi应该监听0.0.0.0,而不是环回地址127.0.0.1—-如果监听环回地址,岂不是外部来的访问都接收不到吗哈哈)
a、0.0.0.0:它表示的是这样一个集合:所有不清楚的主机和目的网络。
b、255.255.255.255:限制广播地址,这个地址不能被路由器转发。
c、127.0.0.1:本机地址,在Windows系统中,这个地址有一个别名“Localhost”。
docker ssh连接的问题
为了让pycharm能远程连接docker中的开发环境,需要开启ssh服务。具体开启方法见: pycharm专业版连接远程docker容器
开启后,测试指令“ssh root@127.0.0.1 -p [端口号] ” 可以连接,且pycharm可以正常连接docker环境。
但是,当运用docker container stop将容器关闭,再重启docker container start之后,ssh出了问题:
xys@xys-computer:~$ ssh root@127.0.0.1 -p 8022
报错:ssh_exchange_identification: read: Connection reset by peer
同时,pycharm连接docker也报错:连接被对方重设
临时解决办法,docker exec进入容器,在容器内重启sshd。如下图所示,第一次重启报错,但再次重启就成功了。
晕死,其实是sshd服务根本没开启,所以restart会告警,应该用指令:service ssh start.
可以先用service ssh status 检查sshd是否开启:
开机自启动sshd服务的方法:
方法1:[root@localhost ~]# vi /etc/rc.local
加入:service ssh start 或 /etc/init.d/ssh start
方法2:chkconfig
如果需要自启动某些服务,只需使用chkconfig 服务名 on即可,若想关闭,将on改为off
[root@localhost ~]# chkconfig sshd on
还可以再查看sshd的运行级别状态:
[root@localhost ~]# chkconfig –list sshd
各状态对应关系 sshd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
今天的文章docker 网络相关与坑分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/11818.html