Engineering/Docker

docker pull tls handshake timeout 해결

부스 boos 2025. 2. 18. 16:34
728x90

 

 어느 순간부터 PC 에서 도커 이미지 생성 작업하는데, timeout 오류가 발생한다.

 docker.io 에서 이미지를 가지고 오는 부분에서 문제가 있는듯 한데, 마지막에 "TLS hadshake timeout" 메시지가 관련이 있는듯하다.

docker build -t test-app:local .

[+] Building 56.3s (3/3) FINISHED                                                                                                                                                                                                            docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                                                                                                                                                       0.3s
 => => transferring dockerfile: 2.72k                                                                                                                                                                                                                      0.0s 
 => CANCELED [internal] load metadata for docker.io/library/alpine:3.1                                                                                                                                                                                    54.9s
 => ERROR [internal] load metadata for docker.io/adoptopenjdk/maven-openjdk11:lates                                                                                                                                                                       54.8s 
------
 > [internal] load metadata for docker.io/adoptopenjdk/maven-openjdk11:latest:
------
Dockerfile:2
--------------------
   1 |     ## build stage
   2 | >>> FROM adoptopenjdk/maven-openjdk11:latest AS builder
   3 |     WORKDIR /build
   4 |     COPY pom.xml .
--------------------
ERROR: failed to solve: adoptopenjdk/maven-openjdk11:latest: failed to resolve source metadata for docker.io/adoptopenjdk/maven-openjdk11:latest: failed to copy: httpReadSeeker: failed open: failed to do request: Get "https://docker-images-prod.6aa30f8b08e16409b46e0173d6de2f56.r2.cloudflarestorage.com/registry-v2/docker/registry/v2/blobs/sha256/6a/6ac0cb3aa787db7ac312c246bd349ca5e060cb682b8a582e6f771e7ac6407c20/data?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=f1baa2dd9b876aeb89efebbfc9e5d5f4%2F20250218%2Fauto%2Fs3%2Faws4_request&X-Amz-Date=20250218T063902Z&X-Amz-Expires=1200&X-Amz-SignedHeaders=host&X-Amz-Signature=0a44593d5a372fadca931531cb0770d987c755cb77ab8149af30fd83a8dbde90": net/http: TLS handshake timeout

 

 설마 프로그램에서 사용중인 특정 주소만 그런가해서 많이 사용하는 nginx 로 테스트해 보았으나, 동일한 에러가 나온다.( docker pull nginx)

 

 실행중인 도커 데스크탑을 최근에 업데이트를 안했는데, 그 영향인가 싶어서 업데이트(v4.38.0)를 하고 다시 시도해보았으나 동일 에러가 나온다.

 

 그래서  "docker pull image tls hadshake timeout" 로 구글 검색에서 찾아보면, 인터넷이 느릴 경우에 "handshake timeout" 이 나온다고 한다. 흠, 이게 원인이라고 보기에는 서버 빌드 머신에서 동일한 pull 명령어로는 아무 문제가 없고 PC 에서 테스트할때만 갑자기 나오고 있어서 참 애매하다.

 

 그런데, https://serverfault.com/questions/908141/docker-pull-tls-handshake-timeout 에서 mtu 관련 파라미터를 바꾸고 나서 해결했다고 나와서 설마하고 따라 해보니깐 docker pull 이 정상 동작한다. PC 에서 docker 이미지 서버로 가는 네트워크 환경이 무언가 바뀐게 있는 듯 한데, 일단 급한대로 mtu 사이즈 변경해서 적용해보자.

 

1. windows + "R" > "wsl" 실행 후

2. WSL 에서 기본 인터페이스인 eth0 의 mtu 사이즈를 1500 에서 1200 으로 강제 조정 (호스트 PC 의 인터페이스가 조정이 되는거는 아니고 가상 어댑터가 변경해도 상관없을듯하다.)

3. docker pull nginx

 

참고 :

https://github.com/microsoft/WSL/issues/4698#issuecomment-642026585