과제
Dockerfile을 직접 작성하여 유틸리티 이미지를 만들어봅니다.
1.베이스 이미지는 alpine:3.19 버전을 사용합니다.
a.Alpine은 초경량 리눅스 기반 이미지로, 빠른 빌드 속도와 보안성을 위해 실무에서도 가장 많이 사용됩니다.
2.컨테이너 안에는 curl과 vim 도구가 설치되어 있어야 합니다.
a.apk add 명령을 활용해 필요한 패키지를 추가하세요.
b.캐시를 남기지 않도록 --no-cache 옵션을 함께 사용합니다.
3.컨테이너 실행 시 자동으로 셸(sh) 이 열리도록 설정합니다.
a.CMD 명령을 이용해 컨테이너가 실행되면 바로 명령어를 입력할 수 있어야 합니다.
4.이미지를 빌드하고 이름은 mytools:1.0 으로 지정합니다.
a.빌드 명령: docker build -t mytools:1.0 .
5.컨테이너를 실행하여 내부로 진입한 뒤, 아래 명령어들이 잘 동작하는지 확인하세요.
a.curl --version b.vim --version
6.마지막으로, 빌드 로그에서 RUN apk add 단계가 캐시로 잡히는지 관찰해보세요.
a.같은 Dockerfile로 다시 빌드했을 때 어떤 단계가 “Using cache”로 표시되는지 확인합니다.
실습
mkdir mytools // 파일생성
cd mytools
vi dockerfile // 도커파일 생성
FROM alpine:3.19
RUN apk add --no-cache curl vim
CMD ["sh"]
docker build -t mytools:1.0 . // 빌드 실행
docker run -it mytools:1.0 // 도커 실행
// sh 실행
curl --version
vim --version
// 확인
docker build -t mytools:2.0 . // 캐시로 빌드속도 향상 확인
결과




빌드속도 7.7초 -> 1.1초 단축 확인
캐시 재사용 확인
참고
배포판 패키지 관리자 구분
| 배포판 | 패키지관리지 |
| Ubuntu / Debian | apt |
| RHEL / CentOS | yum / dnf |
| Alpine | apk |
apk no cache 하는 이유
한줄 요약
- 실무 = 캐시 활용 (성능/효율)
- 실험/검증 = no-cache (정확성/최신성)
Docker / 컨테이너 환경 → 캐시 남기면 손해
이미지 용량 + 레이어에 영구 저장됨
일반 서버에서는 no cache를 하지 않는이유
만약 업데이트시
캐시가 있는 경우
[초기 설치]
패키지 목록 다운로드 → 캐시 저장
[업데이트]
캐시된 목록 재사용 → 변경된 것만 다운로드
1. 로컬 캐시된 패키지 목록 사용
2. 변경 여부만 체크 (빠름)
3. 필요한 패키지만 다운로드
--no-cache 사용한 경우
[초기 설치]
패키지 목록 다운로드 → 설치 → 캐시 삭제
[업데이트]
다시 목록 다운로드 → 다시 비교 → 필요한 것 다운로드
1. 패키지 목록 새로 다운로드
2. 최신 상태 기준으로 전체 재판단
3. 필요한 패키지만 다운로드
즉 패키지 상태 판단을 위한 메타데이터 확보 과정
결론
- 일반 서버(실무 환경)
→ 캐시를 사용하는 것이 기본 전략
→ 이유:- 패키지 목록 재다운로드 비용 절감
- 업데이트 속도 빠름
- 네트워크 사용 최소화
- 안정적인 반복 빌드 가능
- --no-cache 사용 환경 (주로 로컬/실험/CI)
→ 항상 최신 상태 보장이 필요할 때 사용
→ 특징:- 매번 패키지 목록 새로 다운로드
- 최신 상태 기준으로 재판단
- 캐시 오염/불일치 문제 방지
- 대신 속도 느리고 비효율적
본 글은 강의 내용을 기반으로 학습한 내용을 정리한 글입니다.
https://skilleat.com/class/?idx=14
Docker Essentials - 감 잡히는 컨테이너 & 도커 : 스킬잇
기술을 가장 쉽고 맛있게 배우는 곳, SkillEat. 클라우드, 쿠버네티스, IT 개념부터 실습까지, 스킬을 맛있게 먹어치우세요!
skilleat.com
'Docker' 카테고리의 다른 글
| 4-1. 도커 허브(Docker Hub)란? (0) | 2026.04.15 |
|---|---|
| 4. Dockerfile Best Practices 8가지 (0) | 2026.04.15 |
| 3. Dockerfile의 기본 구조 (1) | 2026.04.15 |
| 2-3. [실습] 이미지 관리 및 정리 실습 (0) | 2026.04.15 |
| 2-2. [실습] 컨테이너 재활용과 포트 변경 실습 (0) | 2026.04.15 |