クイズ: ビルドコンテキストと再現性
한국어 원문으로 표시합니다.
docker build . 의 마지막 . 은 무엇을 가리키는가?
- 빌더에게 전송할 빌드 컨텍스트 디렉터리
- Dockerfile 이 있는 파일 경로
- 결과 이미지를 저장할 위치
- 캐시 디렉터리
Dockerfile 을 고치지 않았는데 COPY . . 캐시가 자주 깨지는 흔한 원인은?
.git등 자주 변하는 파일이 컨텍스트에 포함돼 있어서- 도커 데몬 재시작
- 베이스 이미지가 매번 바뀌어서
- 레이어 수가 너무 많아서
.dockerignore 와 .gitignore 의 관계로 옳은 것은?
- 같은 파일이며 하나만 있으면 된다
.dockerignore가.gitignore를 자동으로 상속한다- 목적이 달라 내용이 다를 수 있다 — 예로
.git은.dockerignore에만 넣는다 .dockerignore는 빌드 결과 이미지에서 파일을 지운다
FROM python:3.12 대신 FROM python:3.12.7-slim 을 권하는 이유는?
- 이미지 이름이 짧아 읽기 쉬워서
- slim 이미지가 언제나 더 빠르게 돌아서
- 떠다니는 태그는 시점에 따라 다른 이미지를 가리켜 빌드가 재현되지 않아서
- 레이어 캐시를 더 많이 재사용할 수 있어서
빌드 시점의 토큰을 ARG 로 넘기면 안 되는 이유는?
docker history등에 값이 남아 이미지를 가진 사람이 볼 수 있어서- ARG 가 문자열만 받아 토큰 형식이 제한되기 때문에
- 인자가 늘어 빌드 속도가 느려져서
- ARG 마다 레이어가 하나씩 늘어나서
이미지에 .env 가 들어간 것을 발견했다. 뒤에 RUN rm .env 를 추가하면?
- 안전해진다 — 파일이 사라진다
- 앞 레이어에 원본이 남아 있어 여전히 추출할 수 있다
- 빌드가 실패한다
- 이미지 크기가 줄어든다