>source

Docker Python API 및 Boto3 은 이미지를 구축하고 Amazon ECR로 푸시합니다. 내가 결정하기 어려운 것은 내가 구축 한 이미지가 ECR에 이미 존재하는지 어떻게 확인합니까? Boto3 라이브러리를 다음과 같이 사용할 수 있습니다 :

import boto3
import botocore
client = boto3.client('ecr')
images = client.list_images(repositoryName=repo_name, registryId=repo_id)

이것은 나에게 다이제스트 목록을 제공하지만 이미지 다이제스트는 아닙니다. Docker 저장소 다이제스트입니다 (이미지의 다이제스트 + 매니페스트). 따라서 이미지를 로컬로 빌드하면이 이미지를 사용하여 이미지가 이미 Amazon ECR의 태그와 함께 존재하는지 확인할 수 없습니다.

import docker
client = docker.from_env()
image = client.build(path=docker_dir)
sha256 = image[0].id # <--This Sha sum is for the image, different from repository

어쨌든 이미지를 가져 오지 않고도 주어진 저장소에서 이미지의 실제 이미지 다이제스트를 얻을 수 있습니까?


  • 답변 # 1

    여러분과 비슷한 코드를 사용하고 다이제스트를 받고 있기 때문에 잘못된 일을 할 수 있다고 생각합니다.

    session = boto3.Session(profile_name='default')
    ecr = boto3.client('ecr')
    docker_api = docker.APIClient()
    print(session)
    response = client.list_images(
        repositoryName='repoparent/reponame',
        maxResults=5,
        filter={
            'tagStatus': 'ANY'
        }
    )
    print (response)
    
    

    이미지 다이제스트가 응답에 포함 된 응답과 비슷합니다

    Session(region_name='eu-central-1')
    {'imageIds': [{'imageDigest': 'sha256:cbb5f28f7a8377207c8f95e3a9fae311fa12f81a22401e053d5c07fd0f87', 'imageTag': 'temp_e2e_1.0.13'}], 'nextToken': 'ukD72mdD/mC8b5xV3susmJzzaTgp3hKwR9nRUWa1yZZ4wYnPpldlCcKdX0uA+hWWOLo3ccyBGxIDoN9FQLPPEHv2DRd1OrIm4ooJdVM1M6sckRwXypd7HXj/SnA9iMm3YBl8HRpVXD/kVWB2VlNFS4aftrQQgtfrPNl6nb/S4zGFrQGQp23fdsY5TsKrWTLOWrdo8HGhWX2ylJ0Qoi19DAOBEN2/JAwMbk2hyquf5NDeA7omjHUMI1pfX5lpO2FPF39DKMZtzdwe24e8RcHa508aukf9CYW6gya6knjWbJfQSrb4lIP4HsTVBqDUuxg5IC9ghqLdXJNCEzWHzwQtuKg0vLdHmM6iftfrVhsgY6rKtZbcXwxlJb3a7FMMdm', 'ResponseMetadata': {'RequestId': 'fb33b587-795d-11e9-a32-17af1b3e4c54', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': 'fb33587-75d-11e9-a3342-17af1b3e4c54', 'content-type': 'application/x-amz-json-1.1', 'content-length': '532'}, 'RetryAttempts': 0}}
    
    

관련 자료

  • 이전 javascript - 제거 된 onClick 속성을 어떻게 복원 할 수 있습니까?
  • 다음 참조 무결성 SQL Server를 손상시키지 않고 다른 tbl에서 하나의 주소를 하나로 수집하는 방법