docker 네트워크 및 /etc/resolv.conf에 문제가 있습니다.

docker 네트워크 및 /etc/resolv.conf에 문제가 있습니다.

첫 번째 상황:

다음 docker-compose 파일이 있습니다

version: '3.4'

services:
  api:
    image: ${DOCKER_REGISTRY}project.api
    ports:
      - "5080:5080"
      - "5081:5081"
    build:
      context: .
      dockerfile: src/Api/Dockerfile.Debug
    environment:
      - ASPNETCORE_URLS=http://+:5080;http://+:5081;http://+:5443
      - ASPNETCORE_HTTP_PORT=5080
      - MANAGEMENT_HTTP_PORT=5081
      - ASPNETCORE_ENVIRONMENT=Local

이렇게 하면 docker-compose up컨테이너는 컨테이너에서 실행되는 API에 토큰을 제공해야 하는 특정 엔드포인트에 액세스할 수 없습니다. 그래서 시간 초과 오류가 발생합니다.

두 번째 경우: 그러나 다음 파일을 사용하면 제대로 작동합니다.

version: '3.4'

services:
  api:
    image: ${DOCKER_REGISTRY}project.api
    build:
      context: .
      dockerfile: src/Api/Dockerfile.Debug
    environment:
      - ASPNETCORE_URLS=http://+:5080;http://+:5081;http://+:5443
      - ASPNETCORE_HTTP_PORT=5080
      - MANAGEMENT_HTTP_PORT=5081
      - ASPNETCORE_ENVIRONMENT=Local
    network_mode: host

내 호스트에서는 VPN이 실행 중일 때만 토큰 엔드포인트에 액세스할 수 있다는 점에 주목할 필요가 있습니다.

/etc/resolv.conf/두 경우 모두에서( 사용하여) 컨테이너의 내용을 보려고 합니다 docker exec -it "container_id" bash.

첫 번째 상황: (작업하지 않는 상황)

search XXX.biz YYY.biz
nameserver 127.0.0.11
options ndots:0

두 번째 상황: (작업 상황)

search XXX.biz  YYY.biz
nameserver 10.10.***.***
nameserver 10.11.***.***
nameserver 8.8.8.8

누락된 항목 네임서버 10.10을 추가해 보았습니다.. 네임서버 10.11.. 네임서버 8.8.8.8

다음과 같이 daemon.json:

{
    "dns": [ "10.10.***.***", "10.11.***.***", "8.8.8.8" ],
    "dns-search": [ "XXX.biz", "YYY.biz" ]
}

하지만 첫 번째 경우의 문제는 해결되지 않고 여전히 /etc/resolve.conf/컨테이너 내부의 파일 항목이 표시되지 않습니다.

첫 번째 사건을 해결하는 방법에 대한 아이디어가 있습니까?

PS: 저는 Debian 10 머신을 가지고 있습니다.

다음을 모두 시도했지만 아무것도 작동하지 않습니다.

1번을 시도해보세요:또한 docker-compose 파일에 항목을 추가하려고 시도했지만 dns작동하지 않았습니다.

2번 시도:이는 또한 docker-compose 및 networ_mode : brdige에 항목을 추가 /etc/resolv.conf하지만 애플리케이션은 여전히 ​​토큰을 얻을 수 없습니다.

3번을 시도해보세요:./resolv.conf 파일에 예상 콘텐츠가 포함되어 있는 수동 설치입니다.

volumes:
- ./resolv.conf:/etc/resolv.conf 

또한 에 항목이 추가되지만 /etc/resolv.conf앱은 여전히 ​​토큰을 가져올 수 없습니다.

오류는 다음과 같습니다

An error has occurred in Timed KeyCloak Authentificated Service
api_1  |       System.Net.Http.HttpRequestException: Resource temporarily unavailable (oauth2.XXX.com:443)

이 문제는 토큰 공급자에 대한 액세스뿐만 아니라 인터넷에 대한 일반적인 액세스와 관련된 것으로 보입니다. 실제로 컨테이너 내부에서 다음 스크립트를 실행하면 "오프라인"이 반환됩니다.

echo -e "GET http://google.com HTTP/1.0\n\n" | nc google.com 80 > /dev/null 2>&1

if [ $? -eq 0 ]; then
    echo "Online"
else
    echo "Offline"
fi
Offline

관련 정보