일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Configmap
- jenkins parameter
- cli ec2
- docker
- 쿠버네티스교과서
- kubectl
- 서버간 파일전송
- aws cli
- pod
- aws cli ec2
- statefulset
- EC2
- ELB
- amazon ebs종류
- Ansible
- docker myql
- SecurityContextHolder
- sql 공유
- yaml예시
- 명령어
- k8s
- nexus proxy
- linux 파일복사
- React Native
- describe-instances
- kubectl명령어
- private repostiroy
- amazon ebs
- amazon ebs활용
- 쿠버네티스
- Today
- Total
게으름을 위한 부지런한 게으름뱅리' 블로그
[Docker] Docker pull의 기본 원리 및 사설 registry 구축 및 pull 본문
docker pull 명령어는 Docker에서 이미지를 다운로드하는 데 사용되는 기본적인 명령어입니다. Docker 이미지란 컨테이너를 생성할 때 필요한 모든 파일, 라이브러리, 설정 등이 포함된 패키지입니다. docker pull을 사용하면 Docker Hub 또는 다른 이미지 레지스트리에서 이미지를 가져올 수 있습니다.
다음은 docker pull 명령어의 사용법과 주요 옵션, 그리고 예시를 설명합니다.
기본 문법
docker pull [OPTIONS] IMAGE[:TAG|@DIGEST]
주요 옵션
- -a, --all-tags : 모든 태그를 가져옵니다. 예를 들어, nginx 이미지의 모든 태그를 다운로드하려면 docker pull -a nginx를 사용할 수 있습니다.
- --disable-content-trust : 컨텐츠의 신뢰성 검증을 비활성화합니다. 보안상의 이유로 기본적으로는 이 검증이 활성화되어 있습니다.
이미지와 태그
docker pull 명령어는 IMAGE[:TAG|@DIGEST] 형식으로 작성됩니다.
- IMAGE : 가져오고자 하는 Docker 이미지의 이름입니다. 예를 들어 nginx, ubuntu, node 등이 있습니다.
- TAG : 특정 버전의 이미지를 지정합니다. latest는 기본 태그로, 이미지의 최신 버전을 나타냅니다. 예: nginx:latest, ubuntu:20.04.
- DIGEST : 이미지의 해시 값을 이용해 특정 이미지를 가져옵니다. 예: nginx@sha256:abc123....
예제
docker pull ubuntu #가장 기본적인 사용
docker pull nginx:1.21 #특정 태그의 이미지 다운로드
docker pull -a nginx #모든 태그의 이미지 다운로드 (비추천, 대량 다운로드)
docker pull nginx@sha256:abc123... #해시 값으로 이미지 다운로드
docker pull --disable-content-trust nginx #컨텐츠 신뢰성 검증 비활성화
docker pull의 작동 원리
- 이미지 레지스트리와 통신: docker pull 명령어는 Docker Hub와 같은 이미지 레지스트리 서버에 요청을 보냅니다.
- 메타데이터 요청: 레지스트리는 이미지의 메타데이터(태그, 레이어 등)를 반환합니다.
- 이미지 다운로드: 요청된 이미지의 레이어를 다운로드합니다. 각 레이어는 이미지의 파일 시스템과 설정을 구성하는 부분입니다.
- 이미지 저장: 다운로드한 이미지 레이어를 로컬 Docker 저장소에 저장합니다.
- 이미지 검증: 다운로드한 이미지의 무결성을 검증합니다. --disable-content-trust 옵션을 사용하면 이 검증을 비활성화할 수 있습니다.
사설 레지스트리에서 Docker 이미지 가져오기
docker pull [REGISTRY_HOST[:PORT]/]REPOSITORY[:TAG|@DIGEST]
- REGISTRY_HOST : 사설 레지스트리 서버의 호스트 이름 또는 IP 주소입니다. 예를 들어 myregistry.example.com 또는 192.168.1.100이 될 수 있습니다.
- PORT : 사설 레지스트리 서버의 포트 번호입니다. 기본적으로 Docker 레지스트리는 포트 5000을 사용하지만, 설정에 따라 다를 수 있습니다.
- REPOSITORY : 이미지 저장소의 이름입니다. 예를 들어 myapp, backend 등이 있습니다.
- TAG : 이미지의 태그로, 버전이나 특정 상태를 지정합니다. 예를 들어 latest, v1.0, stable 등이 될 수 있습니다.
- DIGEST : 이미지의 해시 값으로 특정 이미지를 명확하게 지정할 수 있습니다. 예: sha256:abc123....
사설 레지스트리에서 이미지 받기
docker pull myregistry.example.com/myapp:latest #사설 레지스트리의 기본 포트와 주소로 이미지 다운로드
docker pull myregistry.example.com:5000/myapp:v1.0 #특정 포트를 사용하는 경우
docker pull myregistry.example.com/myapp@sha256:abc123... #해시 값을 이용해 이미지 다운로드
사설 레지스트리 설정
사설 레지스트리를 설정할 때는 docker run 명령어로 레지스트리 컨테이너를 실행합니다. 기본적으로 다음과 같이 설정합니다.
docker run -d -p 5000:5000 --name myregistry registry:2
이 명령어는 기본 설정으로 5000 포트에서 레지스트리를 실행합니다. myregistry는 컨테이너의 이름이며, registry:2는 공식 Docker Registry 이미지의 버전 2를 사용합니다.
사설 레지스트리 접근 설정
{
"auths": {
"myregistry.example.com": {
"username": "myuser",
"password": "mypassword",
"email": "myemail@example.com"
}
}
}
사설 레지스트리에 이미지를 푸시하거나 풀할 때는 인증이 필요할 수 있습니다. ~/.docker/config.json 파일에서 인증 정보를 설정할 수 있습니다.
이 설정은 docker login 명령어로도 할 수 있습니다.
docker login myregistry.example.com:5000
로그인 후에는 username, password, email을 입력하여 인증을 완료합니다.
사설 레지스트리에서 이미지 푸시하기
docker tag local-image:tag myregistry.example.com/myapp:tag
docker push myregistry.example.com/myapp:tag
- local-image:tag는 로컬에서 사용할 이미지와 태그입니다.
- myregistry.example.com/myapp:tag는 사설 레지스트리의 저장소 경로와 태그입니다.
사설 레지스트리에서 인증 없는 접근 허용하기
{
"insecure-registries": ["myregistry.example.com:5000"]
}
인증 없이 사설 레지스트리에 접근하려면 --insecure-registry 플래그를 Docker 데몬 설정 파일에 추가해야 합니다. /etc/docker/daemon.json 파일을 열고 다음과 같이 설정합니다. 그 후 Docker 서비스를 재시작합니다.
sudo systemctl restart docker
자주 묻는 질문(FAQ)
Q1: 사설 레지스트리에서 인증 없이 이미지 다운로드는 어떻게 하나요?
A1: docker pull 명령어를 사용할 때 인증이 필요 없는 경우, --insecure-registry 플래그를 Docker 데몬 설정에 추가하고, Docker 서비스를 재시작해야 합니다.
Q2: 사설 레지스트리에서 이미지를 푸시하는 방법은?
A2: docker tag 명령어로 태그를 수정한 후 docker push 명령어로 푸시합니다.
Q3: 사설 레지스트리에서 특정 버전의 이미지를 다운로드하려면?
A3: docker pull myregistry.example.com/myapp:v1.0 형식으로 명령어를 입력합니다.
'IT > Docker' 카테고리의 다른 글
[Docker] Docker로 mysql 실행 및 데이터 공유 (0) | 2024.07.07 |
---|