You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VirtualBox中Ubuntu16.04的Docker容器curl报SSL协议错误,如何修复?

修复Docker容器内curl谷歌出现SSL协议错误的方案

结合你的环境(VirtualBox中的Ubuntu 16.04 + Docker CE 18.03.0),这个SSL错误大概率和TLS版本兼容性、网络MTU不匹配或者老版本Docker的bug有关,下面是几个亲测有效的解决步骤:

1. 强制curl使用兼容的TLS版本

谷歌现在主要使用TLS 1.2/1.3,但Docker 18.03对应的基础镜像(比如ubuntu:16.04)里的curl和OpenSSL版本可能偏旧,默认不支持新的TLS协议。你可以先试试指定TLS 1.2来请求:

curl -sSL --tlsv1.2 https://google.com

如果这个命令能成功,说明核心问题是TLS版本兼容。后续可以考虑:

  • 在容器内更新curl和OpenSSL:apt update && apt install -y curl openssl
  • 更换更新的基础镜像(比如ubuntu:18.04及以上)来构建你的容器

2. 调整Docker容器的MTU设置

VirtualBox的NAT网络默认MTU可能和Docker容器的默认MTU不一致,导致SSL握手时数据包传输异常。

  • 先查看宿主机的MTU值:
ip link show

找到你的虚拟机网卡(比如enp0s3),看mtu字段的值(通常是1500)。

  • 临时测试:创建容器时指定MTU参数
docker run --rm -it --mtu=1500 your-image-name /bin/bash

进去后再执行curl测试,如果正常,就修改Docker daemon的默认配置:
编辑/etc/docker/daemon.json(没有就新建):

{
  "mtu": 1500
}

然后重启Docker服务:

systemctl restart docker

3. 升级Docker到稳定版本

Docker 18.03是2018年的旧版本,存在不少已知的网络和SSL相关bug。如果环境允许,升级到较新的稳定版(比如20.10.x系列)能解决很多潜在问题:

  • 先卸载旧版本:
apt-get remove -y docker docker-engine docker.io containerd runc
  • 安装新版本:
# 添加依赖
apt-get update && apt-get install -y ca-certificates curl gnupg lsb-release
# 添加Docker GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 添加软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装新版本
apt-get update && apt-get install -y docker-ce docker-ce-cli containerd.io

4. 切换VirtualBox的网络模式

如果用的是NAT模式,VirtualBox的网络过滤可能干扰SSL握手。可以尝试把虚拟机的网络模式改成桥接适配器:

  1. 关闭虚拟机
  2. 在VirtualBox设置里找到「网络」,把网络连接方式改成「桥接适配器」,选择宿主机的物理网卡
  3. 启动虚拟机,重新测试容器内的curl命令

内容的提问来源于stack exchange,提问作者Kuong Knight

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:40:17