Docker 시작하기

EBAB!·2023년 7월 12일
0

Docker

목록 보기
3/15

docker.com에서 자신의 운영체제에 맞게 설치를 합니다. 여기서 docker engine과 docker desktop이 설치됩니다.
이후에 docker hub, docker compose 도구를 배우고 이렇게 4가지가 도커가 제공하는 서비스입니다.

이제 VSC와 같은 IDE 터미널에서 docker를 이용하는 상황이라 해보겠습니다.

로그인은 CLI로도 가능하고 docker desktop을 실행한 뒤 IDE에서 실행하면 자동 로그인이 되어있습니다.

복습

우선 앞의 내용을 다시 상기시켜보면, docker는 앞서 말했듯이 컨테이너를 생성할 수 있고 이 컨테이너를 관리하고 실행할 수 있습니다.

그리고 그 컨테이너는 프로세스가 될 예정입니다. 여기서 중요한 것은 프로세스가 되기 전에 OS를 받는다는 점입니다. docker는 컨테이너를 생성하기 전에 OS와 실행할 앱을 설정받고 컨테이너를 실행하게 됩니다.

컨테이너 생성 과정

docker는 컨테이너를 생성하기 위해 Dockerfile(확장자x)을 읽고 그 정보를 바탕으로 컨테이너를 생성합니다.

위에서 말한 컨테이너 생성에 필요한 정보를 이 Dockerfile에 담게 됩니다.
여기서 image라는 개념이 나타납니다.

OS와 여러 필요한 정보 등은 결국 우리가 만든 어떠한 앱을 실행하기 위한 환경을 제공하는 것입니다. 이런 환경을 하나의 템플릿으로 만든 것이 image입니다. 이런 이미지는 Docker Hub에서 기본적으로 관리되며 제공하는 이미지가 있고, Dockerfile을 통해 직접 만드는 이미지가 있습니다.

즉, 도커는 이미지를 통해 컨테이너를 생성합니다. 하지만 하나의 앱에서도 개발이나 관리에 따라 환경의 변화가 있는데 하나의 이미지로 모든 것을 대체하기란 어렵습니다. 게다가 도커는 이미지를 읽고 컨테이너를 생성하는데 만약 한 줄만 수정해도 이미지 전체를 읽게되는 비효율이 생깁니다.

그래서 이미지는 정확하게는 image layer로 부르며 이미지들을 쌓는 방식을 사용합니다.

read-only인 이유는 이미지가 결국 템플릿이기 때문입니다.
컨테이너를 생성하면 쓰기가 가능한 container layer가 가장 상단에 추가되는 모습이 보이고, 이는 컨테이너는 수정이 가능하다는 의미입니다.

순서를 정리해보면,

  1. Dockerfile을 작성한다.
  2. Dockerfile을 Build하여 이미지를 생성한다.
  3. 생성한 이미지를 바탕으로 Conatiner을 실행한다.

예시입니다.

# [Dockerfile]

FROM node:14
WORKDIR /app
COPY package.json . 
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node","app.mjs"]

명령어의 종류가 많지만 위의 명령어들을 먼저 살펴보면서 Dokcerfile을 읽는 과정을 간단하게 살펴보겠습니다.

  1. FROM node:14 : node라는 이미지에서 14태그를 달고 있는 이미지를 불러옵니다.
  2. WORKDIR /app : 컨테이너 내부에서 작업할 위치를 /app으로 둡니다.
  3. COPY package.json . : package.json 파일을 컨테이너 작업 위치로 옮깁니다.
  4. RUN npm install : 컨테이너에서 npm install을 실행합니다.
  5. COPY . . : 현재 위치의 모든 파일을 작업 위치로 카피합니다.
  6. EXPOSE 3000 : 해당 컨테이너를 3000포트로 노출합니다.
  7. CMD ["node","app.mjs"] : node app.mjs를 실행합니다.

간단하게만 설명했는데 다음 글에서 자세히 살펴보겠습니다.

profile
공부!

0개의 댓글