如何释放被 rootlessport 占用的端口

177次阅读
没有评论

问题描述

在将 Mailman3 Docker 项目转换为 podman(版本 4.4.1)pod 时,遇到了一些 “address in use” 错误。您认为调试这些错误的方法是找出哪个进程占用了端口并停止它,或者使用不同的端口。但在这个虚拟机上,您无法释放这个端口。您已经尝试以启动 pod 的用户身份执行了以下命令,但似乎没有重置网络以释放端口的使用:

podman pod stop <pod>
podman pod rm <pod>
podman system prune --all --force
podman system reset

在这个虚拟机上,您发现只有一个名为 rootlessport 的服务在使用这个端口。您认为这与 podman 本身有关。

netstat -plan | grep :8000
tcp6       0      0 :::8000                 :::*                    LISTEN      40976/rootlessport

您想了解 rootlessport 是什么,以及如何让它释放这个端口。您不认为它是一个 systemd 服务。

systemctl -l | grep -i rootlessport

解决方案

请注意以下操作可能涉及版本差异,或者在执行任何操作之前备份您的数据。

停止并释放 rootlessport

rootlessport 是 podman 包中的一部分。您可以使用以下方法停止并释放 rootlessport 占用的端口:

  1. 使用 root 权限,查找并终止 rootlessport 进程:
kill $(ps aux | grep rootlessport | awk '{print $2}')

这将终止 rootlessport 进程,释放占用的端口。此后,您应该能够启动新的容器。

  1. 如果您仍然不确定出现了什么问题,您可以尝试查看 podman 日志以获取更多信息。运行以下命令以查看 podman 的日志记录:
journalctl -u podman

这可能会显示 podman 相关的日志,帮助您识别潜在问题。

关于 rootlessport

rootlessport 是 podman 包中的一个组件,它与 podman 的根权限分离功能有关。它可以帮助用户在不需要 root 权限的情况下管理网络端口。

请注意,在操作时务必小心。终止进程可能会导致意外的影响,因此请确保您了解您正在做什么,或者最好在进行任何操作之前备份您的数据。

如果您遇到任何问题或需要更详细的信息,可以参考相关的文档或提问社区来获取帮助。

参考链接:rootlessport 文档

这个解决方案应该能够帮助您释放被 rootlessport 占用的端口,以便您可以继续使用 podman 来管理容器。如果您仍然遇到问题,请参考相关文档或社区资源以获取更多帮助。

正文完
 1