[도커] 중간점검 1장 ~ 5장 문제 만들기

공효은·2023년 7월 20일
0

도커

목록 보기
12/12
post-thumbnail

1. 다음중 도커에 대한 설명이 아닌것은?

  1. 애플리케이션의 각 컴포넌트를 컨테이너로 이주한 다음 애저 쿠버네티스 서비스나 아마존 일랙스틱 컨테이너 서비스 혹은 직접 구축한 도커 클러스터에서 전체 애플리케이션을 실행할 수 있다.

  2. 기존 설치 절차를 Dockerfile이라는 스크립트로 재작성해야하고, 배포 관련 사항 역시 도커 컴포즈나 쿠버네티스에서 사용되는 애플리케이션 매니페스트로 재작성해야한다.

  3. 코드를 수정할 필요는 없다. 컨테이너화된 애플리케이션은 업무용 노트북부터 클라우드까지 어떤 환경이든 기존과 동일한 기술 스택에서 그대로 동작한다.

4.애플리케이션의 각 컴포넌트를 가상머신에서 동작시킨다.

2-1. 다음 명령어의 의미와 명령어를 통해 실행될 일들을 서술 하시오

docker container run diamol/ch02-hello-diamol

2-2. 조금 전의 명령어를 한 번 더 입력해보면 이미지를 내려받는 부분이 사라지고 바로 컨테이너를 실행하는 메시지가 출력된다. 이 애플리케이션은 컴퓨터의 이름, 운영체제 종류, 네트워크 주소 등을 출력하는데 컨테이너를 실행시킬때마다 컴퓨터의 이름과 IP주소가 바뀐다. 그 이유는 무엇일까?

3. 다음중 컨테이너에 대한 설명으로 옳지 않은것은?

  1. 컨테이너는 격리는 달성하더라도 밀집은 제공하지 못한다.
  2. 컨테이너는 호스트 컴퓨터의 운영체제를 공유하므로 필요한 리소스가 크게 경감된다.
  3. 컨테이너는 호스트 컴퓨터에서 가상 머신에 비해 더 많은 수의 애플리케이션을 실행할 수 있다.
  4. 컨테이너는 서로 독립적인 환경을 갖고, 호스트 컴퓨터의 CPU와 메모리, 운영 체제를 공유한다.
  5. 컨테이너는 도커가 관리하는 독립적인 가상 리소스(호스트명, IP주소, 디스크 드라이브)를 갖는다.

4. 다음중 docker container run 명령어의 옵션에 대해서 정확하지 않은 설명을 고르시오

  1. --interactive: 컨테이너에 접속된 상태가 된다.
  2. --tty : 터미널 세션을 통해 컨테이너를 조작한다.
  3. --detach: 컨테이너를 백그라운드에서 동작시킨다.
  4. --publish: 컨테이너의 포트를 외부에 공개한다.
  5. --name: 컨테이너에 이름을 붙이고 이 이름으로 컨테이너를 지칭한다.

5. 다음 Dockerfile과 인스트럭션에 대한 설명으로 틀린것을 고르시오

//web-ping 애플리케이션의 Dockerfile 스크립트
FROM diamol/node
ENV TARGET="blog.sizeyed.com"
ENV METHOD="HEAD"
ENV INTERVAL="3000"

WORKDIR /web-ping
COPY app.js .

CMD ["node", "/web-ping/app.js"]
  1. FROM: 이 이미지는 web-ping 애플리케이션을 실행하는 데 필요한 런타임인 Node.js가 설치 돼 있다.
  2. ENV: 환경 변수 값을 지정하기 위한 인스트럭션이다. 값을 지정하기 위해 [key]="[value]" 형식을 따른다.
  3. WORKDIR: 컨테이너 이미지 파일 시스템에 디렉터리를 만들고, 해당 디렉터리를 작업 디렉터리로 지정하는 인스트럭션이다. 리눅스 컨테이너에서는 /web-ping 디렉터리를 만들고, 윈도 컨테이너에서는 C:\web-ping 디렉터리를 만든다.
  4. COPY: 로컬 파일 시스템의 파일 혹은 디렉터리를 컨테이너 이미지로 복사하는 인스트럭션이다. [원본경로][복사경로] 형식으로 지정한다.
  5. CMD : 도커가 컨테이너를 실행하기 위한 인스트럭션이다. 여기서는 Node.js 런타임이 컨테이너를 시작하도록 app.js를 지정했다.

6. 이미지 레이어에 대한 설명으로 틀린것을 고르시오

  1. Dockerfile 인스트럭션과 이미지 레이어는 1:1 관계를 갖는다.
  2. 이미지 레이어를 여러 이미지가 공유한다면, 공유되는 레이어는 수정이 쉬워야한다. 공유하는 다른 이미지에 영향을 미치기 때문이다.
  3. 만약 Node.js 애플리케이션이 실행되는 컨테이너를 여러 개 실행한다면 이들 컨테이너는 모두 Node.js 런타임이 들어있는 이미지 레이어를 공유한다.
  4. 도커 이미지는 이미지 레이어가 모인 논리적 대상이다.

7. 멀티 스테이지 Dockerfile 스크립트에 대한 설명으로 옳지 않은것을 고르시오

  1. 모든 빌드 과정은 도커 컨테이너 내부에서 이뤄진다. 그리고 이들 컨테이너는 모든 도구를 정확한 버전으로 갖추고 있다.
  2. 최종 산출물인 이미지에 모든 도구가 포함된다.
  3. 멀티 스테이지 Dockerfile 스크립트를 통해 빌드 과정을 세밀하게 조정하여 최종 산출물인 이미지를 작게 유지할 수 있다.
  4. 멀티 스테이즈 빌드의 각 단계는 자신만의 캐시를 따로 갖는다. 그리고 도커는 빌드 중에 각 인스트럭션에 해당하는 레이어 캐시를 찾는다.

8. 도커 이미지에는 이름이 부여되는데, 이 이름에 해당 이미지를 내려받기 위해 필요한 모든 정보가 들어있다. 이미지의 전체 이름(이미지 참조)의 네가지 요소에 대한 설명으로 옳지 않은것을 골라라.

docker.io/diamol/golang:latest
  1. docker.io : 이미지가 저장된 레지스트리의 도메인, 기본값은 도커 허브이다.
  2. diamol: 이미지의 작성자의 계정 이름. 개인 혹은 단체의 이름에 해당한다.
  3. diamol: 누구나 이미지를 내려받고 해당 리포지 토리에 이미지를 푸시할 수 있다.
  4. golang: 이미지 리포지터리의 이름. 일반적으로 애플리케이션의 이름에 해당한다.

9. 로컬 컴퓨터 전용 도커레지스트리에 대한 설명으로 옳지 않은것을 고르라.

  1. 로컬 레지스트리에 이미지를 푸시하고 내려 받기 위해 보안 프로토콜인 HTTPS대신 비보안 프로토콜인 HTTP를 사용한다.
  2. 비보안 레지스트리를 사용하려면 로컬 컴퓨터의 레지스트리를 비보안 레지스트리 허용 목록에 추가해야한다.
    도커엔진의 모든 설정은 daemoe.json이라는 이름의 설정파일에 들어있다.
  3. 실제 도메인 네임이나 IP주소를 알면 로컬 네트워크상의 다른 사람에게 이미지를 공유할 수 있다.
  4. 로컬 레지스트리를 사용하는것이 상업용 레지스트리를 사용하는 것 보다 보안상 훨씬 유리하다.

10. 도커 이미지 태그에 대한 설명으로 옳지 않은것을 고르시오.

  1. 같은 이미지에 여러 개의 태그를 부여할 수 없다.
  2. [major].[minor].[patch] 형태를 따르는것이 일반적이다.
  3. 직접 작성한 Dockerfile 스크립트의 기반 이미지는 가능한 한 정확한 버전을 사용하는게 좋다.
  4. 버전을 구체적으로 지정하지 않으면 빌드용 이미지가 업데이트 되면서 빌드가 깨질 수 있고, 런타임의 업데이트로 인해 애플리케이션 실행 과정에서 오류가 발생할 수 있다.
profile
잼나게 코딩하면서 살고 싶어요 ^O^/

0개의 댓글