모음/[쿠버네티스 인 액션]

[쿠버네티스 인 액션] 2장. 도커와 쿠버네티스 첫걸음 - docker 이미지, node.js 애플리케이션 실행

ttoance 2024. 8. 22. 02:01

1. docker 설치 

 

Install Docker Engine

Learn how to choose the best method for you to install Docker Engine. This client-server application is available on Linux, Mac, Windows, and as a static binary.

docs.docker.com

 

ㄴ mac 설치 링크 

Install Docker Desktop on Mac | Docker Docs

 

Install Docker Desktop on Mac

Install Docker for Mac to get started. This guide covers system requirements, where to download, and instructions on how to install and update.

docs.docker.com

 

 

2. docker run 명령 수행 시 일어나는 동작 

docker run busybox echo "Hello world"

 

docker run busybox echo "Hello world" 결과화면

 

참고로) 버전 지정 필요 시, 아래 명령어 실행 필요함

docker run <image>:<tag>

 

 

3. 간단한 node.js 어플리케이션 실행하기 

- http 요청을 받아서, 애플리케이션이 실행중인 머신의 호스트 이름을 응답으로 반환 

ㄴ 컨테이너 내부의 호스트 이름을 바라노는데, 이게 스케일 아웃을 할 때 유용하게 사용됨. 

ㄴ http 요청이 애플리케이션의 다른 인스턴스 호출함 

const http = require('http');
const os = require('os');

console.log("server starting...");

var handler = function(req, res) {
    console.log("received req from " + req.connection.remoteAddress);
    res.writeHead(200);
    res.end("you've hit " + os.hostname() + "\n");
};

var www = http.createServer(handler);
www.listen(8080);

 

- 이미지로 패키징하기 위해 먼저 dockerfile 생성해야함 

ㄴ dockerfile에는 이미지 생성하기 위한 지시사항이 담겨있으며, app.js 파일과 동일 디렉터리에 있어야함. 

FROM node:8 # 책에서는 7이지만, warning 발생해 8로 올림 
ADD app.js /app.js # 루트 디렉터리에 동일한 이름 추가 
ENTRYPOINT ["node", "app.js"] # 이미지 실행 시 수행되어야 할 이미지 명령어 정의 (node app.js)

 

docker build -t kubia .

이 때, 빌드는 도커 클라이언트가 아닌 도커 데몬에서 이미지 빌드가 진행됨. 

 

3-1. docker 이미지 레이어 

- 각 dockerfile당 레이어 하나만 생성되지는 않는다.

 

 

 

참고) 로컬에 저장된 이미지 조회 시, 

docker images

 

 

4. 컨테이너 이미지 실행 

docker run --name kubia-container -p 8080:8080 -d kubia

- kubia 이미지에서 kubia-container 컨테이너로 실행

- 콘솔에서 분리돼(-d) 백그라운드에서 실행됨 

- 8080 포트가 컨테이너 8080포트와 매핑 

실행화면

 

4-1. 명령어 

docker ps # 실행중인 컨테이너 목록 
docker inspect kubia-container # 상세 정보 JSON 형식으로 리턴
docker stop kubia-container # 컨테이너 중지, 메인 프로세스 중지
docker ps -a # 중지된 컨테이너 포함된 모든 컨테이너 출력
docker rm kubia-container # 컨테이너 삭제

 

 

5. 실행중인 컨테이너 내부 탐색 

docker exec -it kubia-container bash

-i : 표준입력을 오픈 상태로 유지 -> 셀에 명령어 입력하기 위해 필요 

-t : 의사 터미널 할당 

 

 

6. 도커 허브 레지스토리 

Docker Hub Container Image Library | App Containerization

 

Docker Hub Container Image Library | App Containerization

Increase your reach and adoption on Docker Hub With a Docker Verified Publisher subscription, you'll increase trust, boost discoverability, get exclusive data insights, and much more.

hub.docker.com

 

docker tag kubia sootoance/kubia # 허브 올리기전 태그 
docker images # 태그 확인 
docker login # 최초 시 로그인 필요 
docker push sootoance/kubia

 

반응형