Engineering/Docker

docker pull tls handshake timeout 해결

산책散策 2025. 2. 18. 16:34
728x90
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

 

어느 순간부터 PC 에서 도커 이미지 생성 작업하는데, 오류가 발생한다. docker.io 에서 이미지를 가지고 오는 부분에서 문제가 있는듯 한데, 마지막에 "TLS hadshake 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