코딩박스

[Docker] docker 란 ? docker 의 기본개념 및 사용법

by 코박7

docker 의 기본개념

  • 도커란 컨테이너를 사용하여 응용프로그램을 더 쉽게 만들고 배포하고 실행할 수 있도록 설계된 도구 이며 컨테이너 기반의 오픈소스 가상화 플랫폼.

 

docker 를 사용해야 하는 이유.

  • 어떤 프로그램을 다운받아 사용할때, 일반적으로 위와 같은 과정을 거치는데, 프로그램 OS, 프로그램 버전에 따라 오류가 발생할 수 있음.
  • 하지만 도커를 이용해서 다운받게되면 환경에 제약없이 이미지만 다운 받아 사용하면 되기 때문에 매우 간편

 

docker 이미지란 ?

  • 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같은 응용 프로그램을 실행하는 데 필요한 모든 것을 포함하는 가볍고 독립적이며 실행 가능한 소프트웨어 패키지.
  • 컨테이너 이미지는 런타임에 컨테이너가 되고 도커 컨테이너의 경우 도커 엔진에서 실행될 때 이미지가 컨테이너가 된다.
  • 예를 들어 카카오톡 이미지가 있다고 하면 카카오톡 이미지는 카카오톡을 실행하기 위한 모든 패키지가 들어있고 해당 이미지로 컨테이너를 생성할 수 있다고 생각하면 된다.

  • 베이스 이미지란 기본적인 운영체제, 런타임 환경을 제공하는 이미지 입니다.(ubuntu, centos 등..)

  • 이렇게 모인 이미지들이 런타임에 컨테이너가 됨.

 

docker 컨테이너란 ?

  • 컨테이너의 계층. 분리된 프로세스를 실행하기 위한 운영 체제를 가상화 할 수 있습니다.

 

이미지를 만들어 컨테이너 만들기

// 베이스 이미지를 명시.
FROM 

// 추가적으로 필요한 파일들을 다운로드 받는다.
RUN 

// 컨테이너 시작 시 실행 될 명령어를 명시해준다.
CMD
  • docker image 를 만들기 위해선 docker file 이 필요하다.
  • docker file 에 입력된 것들이 docker build 시 도커 클라이언트에 전달되어서 도커 서버가 인식을 한다.
  • build 명령어 입력 시 해당 디렉토리 내에서 dockerfile 이라는 파일을 찾아서 도커 클라이언트에 전달하는 역할.

 

Node.js 로 작성된 이미지 및 컨테이너

// dockerfile

FROM node:10 => 베이스 이미지

COPY ./ ./ => server.js, package.json 를 사용하기 위한 COPY 

RUN npm install => 추가적으로 nodeJs 에서 사용할 파일들 다운

CMD ["node", "server.js"] => 컨테이너 시작 시 실행 될 명령어.

  • COPY 를 사용하는 이유는 Dockerfile 를 읽어 컨테이너를 만들지만 server.js, package.json 은 Dockerfile 이 바로 읽을 수 없으므로 같은 디렉토리에 있는 파일들을 컨테이너에 COPY 하기 위함.

 

// package.js => node 에서 사용할 의존성.

{
  "name": "docker",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \\"Error: no test specified\\" && exit 1"
  },
  "dependencies": {
    "express": "4.18.2"
  },
  "author": "",
  "license": "ISC"
}

  • docker build 를 통해 docker client 에게 전달.

  • build 완료 후 나오는 image 이름

docker run < -p 49160:8080 > 이미지 이름
  • 49160 ⇒ 브라우저에서 입력하는 포트
  • 8080 ⇒ 컨테이너 안에 있는 포트
  • 49160 을 입력하면 컨테이너 8080 포트와 매핑 시켜줌.

 

이미지 이름 변경

docker build ./ -t tnuren/hello:latest

-t <나의 도커 아이디> / <저장소/프로젝트 이름> : 버전

 

블로그의 정보

코딩박스

코박7

활동하기