티스토리 뷰

🐳 Docker

docker push

James Wetzel 2025. 1. 15. 11:35
728x90
반응형

docker push 명령어는 Docker 이미지를 로컬에서 원격 레지스트리(예: Docker Hub, AWS ECR, GCR, etc.)로 업로드하는 데 사용됩니다. 이미지를 업로드하면 다른 사용자나 시스템이 이를 다운로드(docker pull)하여 사용할 수 있습니다.


1️⃣ docker push의 기본 구조

docker push [레지스트리 주소]/[이미지 이름]:[태그]

구성 요소 설명

  • [레지스트리 주소]:
    • 이미지를 업로드할 레지스트리 주소. 기본값은 Docker Hub (docker.io)입니다.
    • 예: index.docker.io (Docker Hub), 123456789012.dkr.ecr.us-east-1.amazonaws.com (AWS ECR).
  • [이미지 이름]:
    • 업로드하려는 Docker 이미지의 이름.
    • 예: myapp, nginx, username/myapp.
  • [태그]:
    • 이미지 버전(태그)을 지정. 기본값은 latest입니다.
    • 예: v1.0, latest, dev.

2️⃣ 사용 방법

1. Docker 이미지 태그 추가

docker push를 실행하기 전에 이미지를 원격 레지스트리에 업로드할 수 있도록 올바른 태그를 지정해야 합니다.
태그는 docker tag 명령어를 사용해 지정합니다.

docker tag [이미지 ID] [레지스트리 주소]/[이미지 이름]:[태그]

예제:

docker tag myapp:latest username/myapp:v1.0

2. Docker 레지스트리에 로그인

레지스트리에 이미지를 업로드하려면 먼저 로그인해야 합니다.

docker login [레지스트리 주소]

예제 (Docker Hub):

docker login

AWS ECR의 경우:

aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin [레지스트리 주소]

3. 이미지 업로드

태그를 지정한 이미지를 원격 레지스트리에 업로드합니다.

docker push [레지스트리 주소]/[이미지 이름]:[태그]

예제:

docker push username/myapp:v1.0

3️⃣ docker push 작동 방식

  1. 이미지 계층 확인:
    • docker push는 업로드할 이미지의 계층(레이어)을 확인합니다.
    • 이미 원격 레지스트리에 업로드된 계층은 건너뜁니다.
  2. 업로드:
    • 새로운 계층만 원격 레지스트리에 업로드됩니다.
  3. 완료:
    • 이미지가 성공적으로 업로드되면 레지스트리에 해당 이미지의 URL이 저장됩니다.

4️⃣ 자주 발생하는 문제 및 해결 방법

문제 1: 권한 부족

  • 오류: denied: requested access to the resource is denied
  • 원인: 로그인하지 않았거나 레지스트리의 권한이 없습니다.
  • 해결: 올바른 계정으로 로그인하거나 권한을 확인합니다.
    docker login
    

문제 2: 태그가 없거나 잘못됨

  • 오류: repository does not exist or may require 'docker login'
  • 원인: 태그가 누락되었거나 잘못된 이름을 사용했습니다.
  • 해결: 이미지를 태그하고 다시 시도합니다.
    docker tag myapp:latest username/myapp:v1.0
    

문제 3: 네트워크 연결 문제

  • 오류: unauthorized: authentication required 또는 업로드 중 실패.
  • 원인: 네트워크 문제로 레지스트리에 연결할 수 없습니다.
  • 해결: 네트워크 상태를 확인하고 다시 시도합니다.

5️⃣ 실전 예제

1. Docker Hub에 이미지 업로드

  1. 이미지 태그 지정:
  2. docker tag myapp:latest username/myapp:v1.0
  3. Docker Hub 로그인:
  4. docker login
  5. 이미지 업로드:
  6. docker push username/myapp:v1.0

2. AWS ECR에 이미지 업로드

  1. ECR에 로그인:
  2. aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.us-east-1.amazonaws.com
  3. 이미지 태그 지정:
  4. docker tag myapp:latest 123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp:v1.0
  5. 이미지 업로드:
  6. docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp:v1.0

 

728x90
반응형