由于国内网络的原因,连接国外的源很有可能非常慢。因此,容器内的基础镜像中使用国外源的话,在容器在国内运行,apt-get update 会非常慢。
还有一点需要注意:容器的DNS问题。一旦运行docker daemon或者docker run时没有指定dns的,并且宿主机的默认dns为127.0.0.1,那么docker daemon会自动给容器配置dns为8.8.4.4和8.8.8.8,而这两个DNS地址在国内使用时不是很稳定,因此,也存在域名解析缓慢甚至被阻的情况。
解决docker容器里网络请求慢的问题
经过抓包测试等分析,发现网络请求慢,主要发生在dns解析中,所以主要采取dns优化。
如果请求的是自己内网的api, 可以直接修改/etc/hosts文件,如果是外网的请求可以通过更改/etc/resolv.conf里的nameserver实现。
docker容器肯定不是直接通过修改文件实现的,可以通过run的命令实现:
# 添加host docker run --name app --add-host='api.embbnux.com:10.98.10.98' -d ubuntu # 指定dns server docker run --name app --dns=223.5.5.5 --dns=8.8.8.8 -d ubuntu
这样在docker容器里dns解析阶段的时间就被加速了
西部数码的容器云产品是通过docker技术,在集群服务器上部署容器服务实现,功能强大、简单易用,拥有上万linux镜像,灵活轻量,高性价比的容器云产品链接 https://www.west.cn/paas/container/