LabHub

이미지 빌드 · 빌드 컨텍스트와 재현성 · 퀴즈

퀴즈: 빌드 컨텍스트와 재현성

LabHub 에서 이어서 보기

문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. `docker build .` 의 마지막 `.` 은 무엇을 가리키는가?

    1. 빌더에게 전송할 빌드 컨텍스트 디렉터리
    2. Dockerfile 이 있는 파일 경로
    3. 결과 이미지를 저장할 위치
    4. 캐시 디렉터리
  2. Dockerfile 을 고치지 않았는데 `COPY . .` 캐시가 자주 깨지는 흔한 원인은?

    1. `.git` 등 자주 변하는 파일이 컨텍스트에 포함돼 있어서
    2. 도커 데몬 재시작
    3. 베이스 이미지가 매번 바뀌어서
    4. 레이어 수가 너무 많아서
  3. `.dockerignore` 와 `.gitignore` 의 관계로 옳은 것은?

    1. 같은 파일이며 하나만 있으면 된다
    2. `.dockerignore` 가 `.gitignore` 를 자동으로 상속한다
    3. 목적이 달라 내용이 다를 수 있다 — 예로 `.git` 은 `.dockerignore` 에만 넣는다
    4. `.dockerignore` 는 빌드 결과 이미지에서 파일을 지운다
  4. `FROM python:3.12` 대신 `FROM python:3.12.7-slim` 을 권하는 이유는?

    1. 이미지 이름이 짧아 읽기 쉬워서
    2. slim 이미지가 언제나 더 빠르게 돌아서
    3. 떠다니는 태그는 시점에 따라 다른 이미지를 가리켜 빌드가 재현되지 않아서
    4. 레이어 캐시를 더 많이 재사용할 수 있어서
  5. 빌드 시점의 토큰을 `ARG` 로 넘기면 안 되는 이유는?

    1. `docker history` 등에 값이 남아 이미지를 가진 사람이 볼 수 있어서
    2. ARG 가 문자열만 받아 토큰 형식이 제한되기 때문에
    3. 인자가 늘어 빌드 속도가 느려져서
    4. ARG 마다 레이어가 하나씩 늘어나서
  6. 이미지에 `.env` 가 들어간 것을 발견했다. 뒤에 `RUN rm .env` 를 추가하면?

    1. 안전해진다 — 파일이 사라진다
    2. 앞 레이어에 원본이 남아 있어 여전히 추출할 수 있다
    3. 빌드가 실패한다
    4. 이미지 크기가 줄어든다