在Docker中解决apt命令在”Waiting for headers”状态下卡住的问题

190次阅读
没有评论

问题描述

在使用Docker时遇到了一个问题:在Ubuntu 19.04的Docker容器中,执行apt install mysql-client命令时,命令一直卡在”Waiting for headers”状态,无法继续进行。用户在容器内已经安装了一些其他软件包,但在安装mysql-client时出现了问题。

解决方案

在解决此问题之前,请确保已经理解问题描述和上下文。现在让我们来讨论如何解决这个问题。

方案1:调整Docker网络的MTU值

根据用户的评论,问题可能是由于Docker默认的MTU值不适合用户的网络环境导致的。用户提到他使用了PPPoE互联网连接,这可能影响了Docker网络的MTU值。为了解决这个问题,可以尝试调整Docker网络的MTU值。下面是具体的步骤:

  1. 首先,使用以下命令创建一个具有适当MTU值的Docker网络。这里我们使用1492作为MTU值,你可以根据需要进行调整。
    bash
    docker network create --opt com.docker.network.driver.mtu=1492 albums-webapp

  2. 然后,使用以下命令检查新创建的网络的MTU值是否已设置正确。
    bash
    docker network inspect albums-webapp | grep -i mtu

  3. 请注意,当没有容器正在运行时,上述命令可能仍然显示默认的MTU值(1500)。这是因为只有容器运行时才会应用新的MTU值。

  4. 确保新创建的网络允许外部访问,需要在防火墙中进行相应的设置。

方案2:检查网络连接

有时候,网络连接问题也可能导致”Waiting for headers”状态的问题。你可以使用以下命令来测试与网络资源的连接情况,以确定是否存在网络连接问题。

  1. 使用telnet命令测试指定IP地址和端口的连接:
    bash
    telnet 91.189.88.174 80

  2. 使用ping命令测试与其他服务器(如Google、Ubuntu等)的连通性:
    bash
    ping google.com
    ping ubuntu.com

方案3:更新软件源

有时候,由于软件源的问题,apt命令可能会卡住。尝试更新软件源并再次尝试安装mysql-client

  1. 首先,更新软件源列表:
    bash
    apt-get update

  2. 然后再次尝试安装mysql-client
    bash
    apt-get install mysql-client

如果在尝试了上述解决方案后问题仍然存在,建议参考相关的GitHub问题(https://github.com/moby/moby/issues/28314)以获取更多可能的解决方法。

请注意,操作系统、Docker版本以及网络环境等因素可能会影响问题的解决方案。如果问题仍然存在,你可能需要更深入地调查特定的环境和配置。

正文完