容器中使用nscd緩存優化 DNS 解析

關聯k8s pod php dockerphp

原由

偶爾會出現找不到 DNS 的報錯 php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution [tcp://xxx.redis.rds.aliyuncs.com:6379]redis

優化 DNS 解析

在請求域名時,DNS 解析可能會超時或者失敗致使網站沒法訪問。操做系統上通常會啓用 nscd 服務用於作 DNS 的緩存以便避免 DNS 解析失敗。但容器的鏡像中通常不會配置 nscd 服務,您能夠在常常作 DNS 解析的容器上安裝 nscd 服務來優化容器中的 DNS 解析。docker

您須要首先安裝 nscd 軟件包,而後在容器啓動的時候首先啓動 nscd 服務,再啓動本身的進程。緩存

FROM php:7.1-fpm-stretch
RUN apt-get update && apt-get install -y nscd && rm -rf /var/lib/apt/lists/*
CMD service nscd start; bash
相關文章
相關標籤/搜索