이 글은 Udemy의 "【한글자막】 Docker & Kubernetes : 실전 가이드" 강의의 학습 노트입니다.
https://www.udemy.com/course/docker-kubernetes-2022/
도커란 컨테이너를 생성하고 관리하는 '컨테이너 기술'이다.
컨테이너는 소스코드와 필요한 추가 도구, 라이브러리 등을 패키징한 것이다.
마치 피크닉을 위해 필요한 모든 것을 담아 놓는 피크닉 가방과 같다.
모든 어플리케이션에는 적절한 환경과 적절한 라이브러리, 버전 등이 필요하다. 매번 환경을 설정하고 바꾸고 하는 일은 매우 번거롭다.
그렇다면 가상환경(virtual machine)을 사용하면 되지 않나? 라고 생각할 수 있다. 하지만 가상환경은 원하는 OS를 전부 설치해야 하며 독립적인 컴퓨터로 작동하여 전체적인 메모리, 성능 등 오버헤드가 심하다. 또한 원하는 가상환경 설정을 공유하기 어렵다.
하지만 컨테이너는 필요한 OS와 추가 도구, 라이브러리 등만을 설치하여 실행시킨다. 또한 컨테이너 간의 연결이 비교적 수월하다. 그리고 컨테이너 구성 파일을 통해 컨테이너 구성 및 설명, 공유가 수월하다.
가상환경
컨테이너
https://labs.play-with-docker.com/
해당 페이지에서 실습해 볼 수 있다.
FROM node:14
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "node", "app.mjs"]
Dockerfile
원하는 Node 버전을 설치 후 package.json 을 통해 dependency 설치하고 3000번 포트를 열어 실행한다.
docker build .
Dockerfile을 빌드하여 Docker image를 생성한다.
docker run -p 3000:3000 c3c544ca6052
도커 이미지를 실행한다.
기본적으로 호스트(실행 중인 컴퓨터)와 컨테이너는 디폴트 연결이 없기 때문에 -p 옵션을 통해 연결시켜줘야 한다.
host:container 순
docker ps
docker stop <컨테이너 ID>
실행 중인 컨테이너를 확인 후 해당 ID 로 종료