읽기 OCR Docker 컨테이너 구성

docker run 명령 인수를 사용하여 Azure AI 비전 읽기 OCR 컨테이너의 런타임 환경을 구성할 수 있습니다. 이 컨테이너에는 여러 필수 설정과 몇 가지 선택적 설정이 있습니다. 몇 가지 명령의 예제를 사용할 수 있습니다. 청구 설정은 컨테이너별로 다릅니다.

구성 설정

컨테이너에는 다음 구성 설정이 있습니다.

Required 설정 목적
ApiKey 청구 정보를 추적합니다.
아니요 ApplicationInsights Azure Application Insights 원격 분석 지원을 컨테이너에 추가할 수 있습니다.
Billing Azure에서 서비스 리소스의 엔드포인트 URI를 지정합니다.
Eula 컨테이너에 대한 라이선스에 동의했음을 나타냅니다.
아니요 Fluentd 로그 및 메트릭 데이터(선택 사항)를 Fluentd 서버에 씁니다.
아니요 HTTP 프록시 아웃바운드 요청을 만들기 위한 HTTP 프록시를 구성합니다.
아니요 로깅 컨테이너에 대한 ASP.NET Core 로깅 지원을 제공합니다.
아니요 Mounts 호스트 컴퓨터에서 컨테이너로, 컨테이너에서 호스트 컴퓨터로 데이터를 읽고 씁니다.

Important

ApiKey, BillingEula 설정은 함께 사용됩니다. 이 세 가지 설정 모두에 대해 유효한 값을 제공해야 하며, 제공하지 않을 경우 컨테이너는 시작되지 않습니다. 이러한 구성 설정을 사용하여 컨테이너를 인스턴스화하는 방법에 대한 자세한 내용은 청구를 참조하세요.

컨테이너에는 다음과 같은 컨테이너 관련 구성 설정도 있습니다.

Required 설정 목적
아니요 ReadEngineConfig:ResultExpirationPeriod v2.0 컨테이너 전용입니다. 결과 만료 기간(시간)입니다. 기본값은 48시간입니다. 이 설정은 시스템이 인식 결과를 지워야 하는 시기를 지정합니다. 예를 들어 resultExpirationPeriod=1인 경우 시스템은 프로세스 후 1시간 뒤에 인식 결과를 지웁니다. resultExpirationPeriod=0이면 결과가 검색된 후 시스템이 인식 결과를 지웁니다.
아니요 Cache:Redis v2.0 컨테이너 전용입니다. 결과를 저장하는 Redis 스토리지를 사용하도록 설정합니다. 여러 읽기 OCR 컨테이너가 부하 분산 장치 뒤에 배치되는 경우 캐시가 필요합니다.
아니요 Queue:RabbitMQ v2.0 컨테이너 전용입니다. 작업을 디스패칭하는 RabbitMQ를 사용하도록 설정합니다. 이 설정은 여러 읽기 OCR 컨테이너가 부하 분산 장치 뒤에 배치되는 경우에 유용합니다.
아니요 Queue:Azure:QueueVisibilityTimeoutInMilliseconds v3.x 컨테이너 전용입니다. 다른 작업자가 처리할 때 메시지가 표시되지 않도록 하는 시간입니다.
아니요 Storage::DocumentStore::MongoDB v2.0 컨테이너 전용입니다. 영구 결과 스토리지에 대해 MongoDB를 사용하도록 설정합니다.
아니요 Storage:ObjectStore:AzureBlob:ConnectionString v3.x 컨테이너 전용입니다. Azure Blob 스토리지 연결 문자열.
아니요 Storage:TimeToLiveInDays v3.x 컨테이너 전용입니다. 결과 만료 기간(일)입니다. 이 설정은 시스템이 인식 결과를 지워야 하는 시기를 지정합니다. 기본값은 2일입니다. 즉, 해당 기간보다 더 길게 지속되는 결과는 성공적으로 검색되지 않을 수 있습니다. 값은 정수이며 1일에서 7일 사이여야 합니다.
아니요 StorageTimeToLiveInMinutes v3.2-model-2021-09-30-preview 및 새 컨테이너. 결과 만료 기간(분)입니다. 이 설정은 시스템이 인식 결과를 지워야 하는 시기를 지정합니다. 기본값은 2일(2880분)입니다. 즉, 해당 기간보다 더 길게 지속되는 결과는 성공적으로 검색되지 않을 수 있습니다. 값은 정수이며 60분에서 7일(10080분) 사이여야 합니다.
아니요 Task:MaxRunningTimeSpanInMinutes v3.x 컨테이너 전용입니다. 단일 요청에 대한 최대 실행 시간입니다. 기본값은 60분입니다.
아니요 EnableSyncNTPServer v3.2-model-2021-09-30-preview 및 최신 컨테이너를 제외하고 v3.x 컨테이너만 해당됩니다. 시스템 시간과 예상 작업 런타임 간의 동기화를 보장하는 NTP 서버 동기화 메커니즘을 사용하도록 설정합니다. 이를 위해서는 외부 네트워크 트래픽이 필요합니다. 기본값은 true입니다.
아니요 NTPServerAddress v3.2-model-2021-09-30-preview 및 최신 컨테이너를 제외하고 v3.x 컨테이너만 해당됩니다. 시간 동기화를 위한 NTP 서버입니다. 기본값은 time.windows.com입니다.
아니요 Mounts::Shared v3.x 컨테이너 전용입니다. 인식 결과를 저장하기 위한 로컬 폴더입니다. 기본값은 /share입니다. Azure Blob Storage를 사용하지 않고 컨테이너를 실행하는 경우 인식 결과를 위한 충분한 공간이 있는지 확인하기 위해 이 폴더에 볼륨을 탑재하는 것이 좋습니다.

ApiKey 구성 설정

ApiKey 설정은 컨테이너에 대한 청구 정보를 추적하는 데 사용되는 비전 리소스 키를 지정합니다. ApiKey에 대한 값을 지정해야 하며 이 값은 Billing 구성 설정에 대해 지정된 비전 리소스에 대한 유효한 키여야 합니다.

이 설정은 다음 위치에서 찾을 수 있습니다.

  • Azure Portal: 아래의 Azure AI 서비스 리소스 관리

ApplicationInsights 설정

ApplicationInsights 설정으로 Azure Application Insights 원격 분석 지원을 컨테이너에 추가할 수 있습니다. Application Insights는 컨테이너의 심층 모니터링을 제공합니다. 컨테이너의 가용성, 성능 및 사용량을 쉽게 모니터링할 수 있습니다. 또한 컨테이너의 오류를 빠르게 식별하고 진단할 수 있습니다.

다음 표에서는 ApplicationInsights 섹션에서 지원되는 구성 설정을 설명합니다.

Required 이름 데이터 유형 설명
아니요 InstrumentationKey 문자열 컨테이너에 대한 원격 분석 데이터가 전송되는 Application Insights 인스턴스의 계측 키입니다. 자세한 내용은 ASP.NET Core용 Application Insights를 참조하세요.

예시:
InstrumentationKey=123456789

청구 구성 설정

Billing 설정은 컨테이너에 대한 청구 정보를 측정하는 데 사용되는 Azure의 Azure AI 서비스 리소스 엔드포인트 URI를 지정합니다. 이 구성 설정에 대한 값을 지정해야 하며, 이 값은 Azure의 Azure AI 서비스 리소스에 대한 유효한 엔드포인트 URI여야 합니다. 컨테이너는 약 10 ~ 15분마다 사용량을 보고합니다.

이 설정은 다음 위치에서 찾을 수 있습니다.

  • Azure Portal: Endpoint 레이블이 지정된 Azure AI 서비스 개요

다음 표에 표시된 대로 엔드포인트 URI에 vision/<version> 라우팅을 추가해야 합니다.

Required 이름 데이터 유형 설명
Billing 문자열 청구 엔드포인트 URI입니다.

예시:
Billing=https://westcentralus.api.cognitive.microsoft.com/vision/v3.2

Eula 설정

Eula 설정은 컨테이너에 대한 라이선스에 동의했음을 나타냅니다. 이 구성 설정에 대한 값을 지정해야 하며, 이 값은 accept로 설정해야 합니다.

Required 이름 데이터 유형 설명
Eula 문자열 라이선스 승인

예시:
Eula=accept

Azure AI 서비스 컨테이너는 Azure 사용에 관한 계약에 따라 라이선스가 부여됩니다. Azure 사용에 관한 기존 계약이 없으면 Azure 사용에 관한 계약은 온라인 서비스 사용 약관을 포함한 Microsoft 온라인 정기가입 계약임에 동의합니다. 미리 보기의 경우 Microsoft Azure 미리 보기에 대한 추가 사용 약관에도 동의합니다. 컨테이너를 사용하여 이 사용 약관에 동의합니다.

Fluentd 설정

Fluentd는 통합된 로깅에 대한 오픈 소스 데이터 수집기입니다. Fluentd 설정은 Fluentd 서버에 컨테이너의 연결을 관리합니다. 컨테이너에는 Fluentd 로깅 공급자가 포함되어 있어 컨테이너에서 로그 및 메트릭 데이터(선택 사항)를 Fluentd 서버에 쓸 수 있습니다.

다음 표에서는 Fluentd 섹션에서 지원되는 구성 설정을 설명합니다.

이름 데이터 유형 설명
Host 문자열 Fluentd 서버의 IP 주소 또는 DNS 호스트 이름입니다.
Port 정수 Fluentd 서버의 포트입니다.
기본값은 24224입니다.
HeartbeatMs 정수 하트비트 간격(밀리초)입니다. 이 간격이 만료되기 전에 전송된 이벤트 트래픽이 없을 경우 하트 비트는 Fluentd 서버로 전송됩니다. 기본값은 60000밀리초(1분)입니다.
SendBufferSize 정수 전송 작업에 할당된 네트워크 버퍼 공간(바이트)입니다. 기본값은 32768바이트(32킬로바이트)입니다.
TlsConnectionEstablishmentTimeoutMs 정수 Fluentd 서버와 SSL/TLS 연결을 설정하기 위한 시간 제한(밀리초)입니다. 기본값은 10000밀리초(10초)입니다.
UseTLS가 false로 설정되어 있는 경우 이 값은 무시됩니다.
UseTLS 부울 컨테이너가 Fluentd 서버와 통신하기 위해 SSL/TLS를 사용해야 하는지 여부를 나타냅니다. 기본값은 false입니다.

HTTP 프록시 자격 증명 설정

아웃바운드 요청을 만들기 위한 HTTP 프록시를 구성해야 하는 경우 다음 두 인수를 사용합니다.

이름 데이터 유형 설명
HTTP_PROXY string 사용할 프록시(예: http://proxy:8888)
<proxy-url>
HTTP_PROXY_CREDS string 프록시를 인증하는 데 필요한 자격 증명(예: username:password). 이 값은 소문자여야 합니다.
<proxy-user> string 프록시 사용자입니다.
<proxy-password> string 프록시에 대해 <proxy-user>에 연결된 암호입니다.
docker run --rm -it -p 5000:5000 \
--memory 2g --cpus 1 \
--mount type=bind,src=/home/azureuser/output,target=/output \
<registry-location>/<image-name> \
Eula=accept \
Billing=<endpoint> \
ApiKey=<api-key> \
HTTP_PROXY=<proxy-url> \
HTTP_PROXY_CREDS=<proxy-user>:<proxy-password> \

로깅 설정

Logging 설정은 컨테이너에 대한 ASP.NET Core 로깅 지원을 관리합니다. ASP.NET Core 애플리케이션에 사용하는 컨테이너에 대한 동일한 구성 설정 및 값을 사용할 수 있습니다.

컨테이너에서 지원되는 로깅 공급자는 다음과 같습니다.

공급자 목적
콘솔 ASP.NET Core Console 로깅 공급자입니다. 이 로깅 공급자에 대한 모든 ASP.NET Core 구성 설정 및 기본값이 지원됩니다.
디버그 ASP.NET Core Debug 로깅 공급자입니다. 이 로깅 공급자에 대한 모든 ASP.NET Core 구성 설정 및 기본값이 지원됩니다.
디스크 JSON 로깅 공급자입니다. 이 로깅 공급자는 출력 탑재에 로그 데이터를 씁니다.

이 컨테이너 명령은 출력 탑재에 대한 JSON 형식의 로깅 정보를 저장합니다.

docker run --rm -it -p 5000:5000 \
--memory 2g --cpus 1 \
--mount type=bind,src=/home/azureuser/output,target=/output \
<registry-location>/<image-name> \
Eula=accept \
Billing=<endpoint> \
ApiKey=<api-key> \
Logging:Disk:Format=json \
Mounts:Output=/output

이 컨테이너 명령은 컨테이너가 실행되는 동안 접두사가 dbug인 디버깅 정보를 보여줍니다.

docker run --rm -it -p 5000:5000 \
--memory 2g --cpus 1 \
<registry-location>/<image-name> \
Eula=accept \
Billing=<endpoint> \
ApiKey=<api-key> \
Logging:Console:LogLevel:Default=Debug

디스크 로깅

Disk 로깅 공급자는 다음과 같은 구성 설정을 지원합니다.

이름 데이터 유형 설명
Format 문자열 로그 파일에 대한 출력 형식입니다.
참고: 로깅 공급자를 사용 설정하려면 이 값을 json으로 설정해야 합니다. 또한 컨테이너를 인스턴스화하는 동안 출력 탑재를 지정하지 않고 이 값이 지정된 경우에는 오류가 발생합니다.
MaxFileSize 정수 로그 파일의 최대 크기(MB)입니다. 현재 로그 파일의 크기가 이 값을 충족하거나 초과할 경우 로깅 공급자가 새 로그 파일을 시작합니다. -1을 지정하면 로그 파일의 크기는 출력 탑재(있는 경우)에 대한 최대 파일 크기에 의해서만 제한됩니다. 기본값은 1입니다.

ASP.NET Core 로깅 지원 구성에 대한 자세한 내용은 설정 파일 구성을 참조하세요.

탑재 설정

바인딩 탑재를 사용하여 컨테이너에서 또는 컨테이너로 읽고 씁니다. Docker 실행 명령의 --mount옵션을 지정하여 입력 탑재 또는 출력 탑재를 지정할 수 있습니다.

Azure AI 비전 컨테이너는 입력 또는 출력 탑재를 사용하여 학습 또는 서비스 데이터를 저장하지 않습니다.

호스트 탑재 위치의 정확한 구문은 호스트 운영 체제에 따라 다릅니다. 또한 Docker 서비스 계정에서 사용하는 권한과 호스트 탑재 위치 권한이 충돌하여 호스트 컴퓨터의 탑재 위치에 액세스하지 못할 수도 있습니다.

선택 사항 이름 데이터 유형 설명
허용되지 않음 Input 문자열 Azure AI 비전 컨테이너에는 사용되지 않습니다.
선택 사항 Output 문자열 출력 탑재의 대상입니다. 기본값은 /output입니다. 로그의 위치입니다. 컨테이너 로그가 포함됩니다.

예시:
--mount type=bind,src=c:\output,target=/output

Docker 실행 명령 예제

다음 예제에서는 구성 설정을 사용하여 docker run 명령을 쓰고 사용하는 방법을 설명합니다. 한번 실행되면 컨테이너는 중지할 때까지 계속 실행됩니다.

  • 줄 연속 문자: 다음 섹션에서 Docker 명령은 줄 연속 문자로 백슬래시(\)를 사용합니다. 호스트 운영 체제의 요구 사항에서 이 기준을 바꾸거나 제거합니다.
  • 인수 순서: Docker 컨테이너 사용법을 잘 아는 경우가 아니라면 인수 순서를 변경하지 마세요.

{argument_name}을(를) 사용자 고유 값으로 바꿉니다.

자리 표시자 형식 또는 예
{API_KEY} 리소스 키 페이지에 있는 비전 리소스의 엔드포인트 키입니다. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{ENDPOINT_URI} 청구 엔드포인트 값은 리소스 개요 페이지에 있습니다. 명시적 예제에 대해서는 필수 매개 변수 수집을 참조하세요.

참고 항목

2019년 7월 1일 이후에 만들어진 새 리소스는 사용자 지정 하위 도메인 이름을 사용합니다. 자세한 내용과 지역 엔드포인트의 전체 목록은 Azure AI 서비스에 대한 사용자 지정 하위 도메인 이름을 참조하세요.

Important

컨테이너를 인스턴스화하려면 Eula, BillingApiKey 옵션을 지정해야 합니다. 그렇지 않으면 컨테이너가 시작되지 않습니다. 자세한 내용은 Billing을 참조하세요. ApiKey 값은 비전 리소스 키 페이지의 입니다.

컨테이너 Docker 예제

다음 Docker 예제는 읽기 OCR 컨테이너에 대한 것입니다.

기본 예제

docker run --rm -it -p 5000:5000 --memory 16g --cpus 8 \
mcr.microsoft.com/azure-cognitive-services/vision/read:3.2-model-2022-04-30 \
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

로깅 예제

docker run --rm -it -p 5000:5000 --memory 16g --cpus 8 \
mcr.microsoft.com/azure-cognitive-services/vision/read:3.2-model-2022-04-30 \
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}
Logging:Console:LogLevel:Default=Information

다음 단계