728x90
개요
본 글에서는 도커를 사용할 때 로컬에 이미지가 없으면 docker pull 명령어를 사용하여 이미지를 다운로드하고, run 명령어로 실행하고는 합니다.
그런데, 때로는 docker pull 명령어를 실행하지 않고도 컨테이너가 잘 실행되는 것을 경험하셨을 것입니다. 이는 우연이 아닌 도커의 스마트한 이미지 다운로드 메커니즘 덕분입니다. 오늘은 이 과정을 정리하고자 합니다.
Docker Run의 동작 원리
docker run 명령어를 실행했을 때, 도커는 다음과 같은 순서로 작업을 처리합니다:
1. 로컬 이미지 검색
먼저 로컬 시스템에서 지정된 이미지를 찾습니다. 예를 들어 docker run nginx를 실행하면, 시스템에서 nginx 이미지를 검색합니다.
2. 자동 다운로드 프로세스
로컬에서 이미지를 찾지 못하면, 도커는 자동으로 다음 단계로 진행됩니다.
- "Unable to find image ... locally" 메시지를 표시
- Docker Hub(기본 레지스트리)에서 이미지 검색 시작
- "Pulling from ..." 메시지와 함께 다운로드 진행
3. 컨테이너 실행
이미지 다운로드가 완료되면, 자동으로 컨테이너를 생성하고 실행합니다.
- 1. 첫 번째 상황: 로컬에
이미지가 없는 경우
docker run nginx # 로컬에 이미지가 없으면 자동으로 pull 합니다
- 2. 두 번째 상황: 이미 로컬에 이미지가 있는 경우
# 이미 로컬에 nginx 이미지가 있다고 가정
docker run nginx # 로컬 이미지를 그대로 사용, 업데이트 체크 안 함
중요한 점:
- Docker run은 로컬에 이미지가 있으면 무조건 그것을 사용합니다
- Docker Hub에 새 버전이 올라와도
자동으로 체크하거나다운로드하지 않습니다 - 최신 버전을 사용하고 싶다면 반드시 수동으로 docker pull 명령어를 실행해야 합니다
# 최신 버전을 받으려면 이렇게 해야 함
docker pull nginx # 먼저 최신 이미지를 받고
docker run nginx # 그 다음 실행
# 이렇게 하면 안 됨
docker run nginx # 이미 로컬에 있는 이미지를 그대로 사용
주의 사항 ❌
- 특정 버전의 이미지가 필요한 경우, 태그를 명시적으로 지정하는 것이 좋습니다.
- 프로덕션 환경에서는 이미지 버전을 명확히 명시하여 예기치 않은 업데이트를 방지해야 합니다.
- 네트워크 환경이 불안정한 경우, 미리 docker pull을 실행하여 이미지를 확보하는 것이 안전합니다.
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2025.01.06 - 익명 볼륨의 함정: --rm 옵션 없이 사용할 때 주의사항 (0) | 2025.01.06 |
---|---|
[TIL, 일일 회고] 2025.01.05 - 데이터베이스 벤더란❓ (0) | 2025.01.05 |
[TIL, 일일 회고] 2025.01.03 - IntelliJ IDEA에서 Excluded Files(제외된 파일) 확인 및 표시하는 방법 (0) | 2025.01.03 |
[TIL, 일일 회고] 2025.01.02 - 계단 수란? (DP, 재귀) (0) | 2025.01.02 |
[TIL, 일일 회고] 2025.01.01 - Docker 이미지 push, 베이스 이미지는 매번 업로드될까❓ (0) | 2025.01.01 |