x86에서 qemu를 사용하여 ARM Docker 컨테이너를 실행할 때 DNS 문제가 발생합니다.

x86에서 qemu를 사용하여 ARM Docker 컨테이너를 실행할 때 DNS 문제가 발생합니다.

저는 궁극적으로 CI 빌드에서 애플리케이션을 컴파일한다는 목표로 x86 시스템에서 arm docker 컨테이너를 실행하려고 합니다. 놀랍게도 그것은 유망하게 시작되었습니다.

내 컴퓨터(5.10 커널의 Manjaro Linux)에 qemu-arm-static을 설정하고 다음 명령을 실행하여 컨테이너를 시작했습니다.

docker run --rm -it --platform linux/arm/v7 --dns 8.8.8.8 arm32v7/debian

나는 예상대로 작동하는 쉘을 받았습니다. 예를 들어 gcc를 실행하여 간단한 hello world를 컴파일할 수 있었습니다. apt를 사용하여 다른 패키지 등을 설치할 수도 있습니다.

그러나 일부 데이터를 얻기 위해 컬을 실행하려고 하면 다음 오류가 발생합니다.

root@2de7d98f3e31:/# curl --verbose github.com
* Expire in 0 ms for 6 (transfer 0x400598a0)
* Expire in 1 ms for 1 (transfer 0x400598a0)
* Expire in 4 ms for 1 (transfer 0x400598a0)
* Expire in 2 ms for 1 (transfer 0x400598a0)
* Expire in 5 ms for 1 (transfer 0x400598a0)
* Expire in 5 ms for 1 (transfer 0x400598a0)
* Expire in 4 ms for 1 (transfer 0x400598a0)
* Expire in 8 ms for 1 (transfer 0x400598a0)
* Expire in 8 ms for 1 (transfer 0x400598a0)
* Expire in 8 ms for 1 (transfer 0x400598a0)
* Expire in 10 ms for 1 (transfer 0x400598a0)
* Expire in 10 ms for 1 (transfer 0x400598a0)
* Expire in 8 ms for 1 (transfer 0x400598a0)
* Expire in 10 ms for 1 (transfer 0x400598a0)
* Expire in 10 ms for 1 (transfer 0x400598a0)
* Could not resolve host: github.com
* Expire in 14 ms for 1 (transfer 0x400598a0)
* Closing connection 0
curl: (6) Could not resolve host: github.com

nslookup에서도 오류가 보고되었습니다.

root@2de7d98f3e31:/# nslookup github.com
../../../../lib/isc/unix/net.c:595: probing sendmsg() with IP_TOS=b8 failed: No buffer space available

나에게 이것은 시스템의 더 일반적인 버그처럼 보입니다.그러나 ping/curl 및 ip 주소/apt와 같은 모든 네트워크 관련 항목은 작동합니다.

내 /etc/resolv.conf가 보여줍니다

nameserver 8.8.8.8

docker 옵션을 사용할 --dns때 예상대로

무슨 일이 일어나고 있고 다음에 무엇을 시도할 수 있는지 아는 사람이 있나요?

추신: DNS는 에뮬레이트되지 않은 x86 컨테이너에서 잘 작동합니다.

답변1

나는 같은 문제에 직면했다. 내 해결 방법은 qemu-user-static 이미지를 일시적으로 다운그레이드하는 것이었습니다.

    docker run --rm --privileged multiarch/qemu-user-static:5.0.0-2 --reset -p yes 

관련 정보