AWS 中 X 分钟后无法访问 Docker 容器

AWS 中 X 分钟后无法访问 Docker 容器

我在 AWS 上运行了一个 Docker 容器(来自 sonarqube 映像),但无法远程访问。我只能通过 ssh 进行访问。

为了解决我的问题,我需要运行以下命令:

$ sysctl net.ipv4.ip_forward=1

问题是几分钟后(或发生某些事件后),此标志会恢复为 net.ipv4.ip_forward=0。某些程序会自动在此文件中添加一行:

#-> grep net.ipv4.ip_forward /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.ip_forward = 0

有人知道是什么原因吗?也许是 AWS 上的某些配置?

答案1

您是否检查过 tuned 并确认此 tuned 是否会覆盖您的 systemctl 设置?我在几台机器上都遇到过这种情况,并且 swappiness

答案2

当你运行时:

sysctl net.ipv4.ip_forward=1

更改不会被保存,它们会暂时写入 /proc,如果您重新启动网络,它们将会丢失。您必须/etc/sysctl.conf直接编辑,删除该net.ipv4.ip_forward = 0行,保留该net.ipv4.ip_forward = 1行,然后运行:

sysctl -p

其他可能的原因:

  • 你有IPForward=no/etc/systemd/network/50-containers.network
  • 你有ip_forward=0/etc/sysctl.d/ip_forward.conf
  • 您是否使用了 EBS 支持的 EC2 映像?如果没有,则重启后不会保留根设备
  • 此 EC2 实例是否由 ELB 启动?ELB 可能随时决定终止并启动新实例,因此未保存到磁盘的 /proc 更改将会丢失。

相关内容