docker 网络模式 与 ftp 主动模式与被动模式

前言

在软件开发的过程中要访问ftp上传和下载文件,本地环境测试可以顺利访问ftp文件服务完成文件上传和下载的过程,但是发布到线上生产环境,通过docker容器化部署,无法访问ftp文件服务器。要理解产生这种问题的原因就需要理解docker的网络模式ftp访问的主动模式与被动模式

docker的网络模式

Docker网络模式 Docker提供了多种网络模式,用于控制容器与主机或其他容器之间的网络通信。以下是一些常用的Docker网络模式:

  1. 桥接模式(bridge):默认情况下,Docker会为每个容器创建一个虚拟网络桥接接口。容器可以通过该接口与主机和其他容器进行通信。这种模式适合在单主机上运行多个容器,并且它们需要相互通信。
  2. 主机模式(host):在主机模式下,容器与主机共享相同的网络命名空间。容器将直接使用主机的网络接口,可以避免额外的网络地址转换和端口映射,提高网络性能。但容器之间的端口冲突问题需要自行解决。
  3. 网络模式(network):用户可以自定义网络,并将需要通信的容器连接到该网络。这种模式适合在多主机环境中创建与主机网络隔离的容器网络,实现容器之间的安全通信。

连接容器和主机 在Docker中,连接容器与主机有多种方式:

  1. 端口映射(Port Mapping):通过端口映射,可以将容器的端口映射到主机的端口上。这样,主机可以直接通过特定的主机IP地址和端口号访问容器提供的服务。
  2. 主机网络模式(Host Networking):使用主机网络模式,容器将直接使用主机的网络接口,与主机拥有相同的IP地址和端口。因此,主机和容器之间的通信与本地进程之间的通信没有区别。
  3. Docker外部网络:如果需要让容器与外部网络通信,可以配置Docker使用宿主机网络设备,并在容器中为该设备分配IP地址。这样,容器就可以直接访问外部网络资源。

ftp访问的主动模式与被动模式

  1. 主动模式:FTP客户端使用N(N>1023)端口连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端开放N+1端口,发送PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据。
  2. 被动模式:FTP客户端使用N(N>1023)连接FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 服务器在本地开放一个端口(1024以上),然后把开放的端口告诉客户端, 客户端再通过N+1端口连接到服务器开放的端口进行数据传输。

总结

ftp主动模式与被动模式的区别在于由哪一方开放端口传输文件,主动模式由客户端开放端口接收文件,被动模式由服务器开放端口客户端通过端口获取文件,区别在于ftp服务器是主动发送文件服务器给客户端还是被动的等待客户端通过开放的端口获取。
如果我们使用ftp主动模式传输文件,那就需要客户端开放随机端口,但是这个时候我们使用的是docker的网络模式通过端口映射的方式与主机通信,这个时候由于没有挂载对应的端口导致在ftp主动模式下无法获取到ftp服务器的文件,这就是我们无法获取文件的原因。
所以在docker网络模式的情况下我们需要使用ftp的被动模式,而在docker主机模式下我们可以使用ftp的主动模式

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值