도커 이미지 & 컨테이터

·2023년 2월 10일
0

docker

목록 보기
1/7
post-thumbnail

도커 이미지

도커 이미지는 도커의 기본 빌드 단위로, 응용 프로그램을 구성하기 위해 필요한 모든 컴포넌트를 포함하고 있습니다. 도커 이미지는 응용 프로그램을 구성하기 위한 컴포넌트들을 하나의 가벼운 패키지로 묶어 만들어 줍니다. 도커 이미지는 한 번 빌드 되면 다른 도커 환경에서도 동일하게 동작합니다.

도커 컨테이너

도커 컨테이너는 도커 이미지를 실행할 수 있는 독립적인 실행환경입니다. 도커 컨테이너는 단일 응용 프로그램을 실행하거나, 여러 개의 응용 프로그램을 실행하기 위해 필요한 리소스를 관리하는 개별 환경을 제공합니다. 도커 컨테이너는 응용 프로그램을 실행하며, 해당 프로그램이 사용하는 컴포넌트를 자동으로 관리합니다.

이미지와 컨테이너의 관계

💡 이미지 : 컨테이너를 위한 청사진, 템플릿 컨테이너 : 이미지를 기반으로 서비스를 실행하기 위한 독립적인 환경

도커 이미지와 컨테이너는 도커 애플리케이션을 구성하는데 필요한 두 가지 요소입니다. 도커 이미지는 응용 프로그램을 구성하기 위해 필요한 컴포넌트들을 하나의 가벼운 패키지로 묶어 만들어 줍니다. 반면 도커 컨테이너는 도커 이미지를 실행할 수 있는 독립적인 실행환경을 제공합니다. 도커 이미지는 컨테이너에 의해 실행되고, 응용 프로그램이 사용하는 컴포넌트를 자동으로 관리합니다. 즉, 설정된 이미지를 기반으로 컨테이너들이 독립적인 실행환경을 구축합니다.

도커 허브를 사용하여 외부 이미지 사용하기

도커 허브는 도커 이미지를 저장하고 공유할 수 있는 온라인 저장소입니다. 도커 허브는 사용자가 손쉽게 도커 이미지를 다운로드하고, 컴퓨터에 설치할 수 있도록 도와줍니다. 도커 허브는 도커 이미지를 저장하고 공유하는데 사용할 수 있는 가장 편리한 방법입니다. 도커 허브를 사용하면, 사용자는 외부 리포지토리에서 도커 이미지를 다운로드하고 로컬 환경에 설치할 수 있습니다.

원하는 외부 이미지를 도커 허브에서 찾은 후, 개발하고 있는 루트 폴더에서 터미널을 키고 다음 커맨드 입력.
ex) 만약 사용하려는 외부 이미지가 node 인 경우,

docker run node;

이미지가 node 인 컨테이너가 실행이 됩니다.

Dockerfile 을 사용하여 자체 이미지 만들고, 컨테이너 실행하기

Dockerfile은 도커 이미지를 생성하기 위한 스크립트로, 도커 이미지를 만들기 위해 필요한 모든 컴포넌트를 정의합니다. Dockerfile 에 필요한 컴포넌트를 작성한다면, 다음과 같이 명령어를 사용하여 이미지를 빌드할 수 있습니다.

Dockerfile 기초 명령어

Dockerfile 에서 자주 사용하는 명령어는 다음과 같습니다.

  • FROM: 도커 이미지를 생성하기 위한 기본 이미지를 지정하는 명령어입니다.
    FROM node
  • RUN: 도커 이미지 내부에서 실행할 명령어를 작성합니다.
    RUN npm install
  • CMD: 컨테이너가 실행될 때 실행할 명령어를 작성합니다.
    CMD ["node", "server.js"]
  • COPY: 현재 디렉토리의 파일이나 디렉토리를 도커 이미지로 복사하는 명령어입니다.
    // 현재 루트 폴더 하위의 모든 파일을 도커 이미지의 /app 안에 복사
    COPY . /app
  • EXPOSE: 도커 컨테이너가 외부에서 접근할 수 있는 포트를 지정합니다.
    EXPOSE 80
    단, EXPOSE 를 사용한다고 하여 바로 해당 외부 포트로 접근이 가능하게 하는 것이 아닙니다. 이는 EXPOSE 를 해당 포트에 할 거라는 정보의 전달일 뿐 실제 해당 포트로 설정하기 위해서는 빌드 후, 컨테이너 실행 시 다음과 같은 옵션 명령어를 작성해야 합니다.
    docker run -p [로컬포트]:[노출포트] [container_id]

Docker 이미지 특징

불변성 및 읽기전용

도커 이미지는 불변성과 읽기 전용 특징을 가지고 있습니다. 이는 컨테이너가 실행되는 동안 도커 이미지는 변경되지 않는 것을 의미합니다. 또한 도커 이미지는 읽기 전용이라는 의미는 도커 이미지에 다른 것을 추가하거나 수정할 수 없다는 것을 의미합니다. 따라서 도커 이미지를 생성할 때, 모든 필요한 컴포넌트를 이미지 내에 포함해주어야 합니다.

이미지 레이어

도커 이미지는 여러개의 레이어로 구성되어 있습니다. 레이어는 각각의 이미지를 만들기 위해 필요한 각각의 컴포넌트를 담고 있습니다. 따라서, 레이어는 이미지를 생성하는 데 도움이 되는데, 같은 이미지를 반복적으로 만들 때는 레이어를 활용하여 빌드 시간을 줄일 수 있습니다. 같은 레이어는 캐시로 저장되며, 재 빌드 시 변경점이 없는 부분에 한해, 캐시 데이터를 가져과 다시 필요할 때 사용할 수 있습니다. 이렇게 사용하면 빌드 속도를 극대화할 수 있습니다.

profile
새로운 것에 관심이 많고, 프로젝트 설계 및 최적화를 좋아합니다.

0개의 댓글