deploy/🐳 Docker
docker push
James Wetzel
2025. 1. 15. 11:35
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 작동 방식
- 이미지 계층 확인:
- docker push는 업로드할 이미지의 계층(레이어)을 확인합니다.
- 이미 원격 레지스트리에 업로드된 계층은 건너뜁니다.
- 업로드:
- 새로운 계층만 원격 레지스트리에 업로드됩니다.
- 완료:
- 이미지가 성공적으로 업로드되면 레지스트리에 해당 이미지의 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에 이미지 업로드
- 이미지 태그 지정:
- docker tag myapp:latest username/myapp:v1.0
- Docker Hub 로그인:
- docker login
- 이미지 업로드:
- docker push username/myapp:v1.0
2. AWS ECR에 이미지 업로드
- ECR에 로그인:
- aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.us-east-1.amazonaws.com
- 이미지 태그 지정:
- docker tag myapp:latest 123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp:v1.0
- 이미지 업로드:
- docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp:v1.0
728x90
반응형