본문 바로가기

DevOps/Docker

[Docker] 도커 컨테이너(Docker Container)와 도커 이미지(Docker Image)에 대해서 - 컴도리돌이

728x90
 

[Docker] 도커 엔진(Docker Engine)에 대해서 - 컴도리돌이

회사에서 이제 카프카(kafka), 도커(docker), 엘라스티서치(elk), 등을 도입 얘기가 나오는데, 나는 아무것도 모릅니다. 😓 오늘은 도커 엔진에 대해 포스팅을 해볼 생각입니다. 아는 게 많고 해 봤던

comdolidol-i.tistory.com

 

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


 

이전 포스팅에서 도커 엔진이 어떻게 구성되어 있고, 각 요소가 어떠한 역할을 하고 있는지 알아봤습니다. 이번에는 도커 컨테이너와 도커이미지가 무엇인지 포스팅할 생각입니다. 😊


도커 컨테이너(Docker Container)/ 도커 이미지(Docker Image)

 

도커 이미지(Docker Image)는 컨테이너(Container)를 만드는 데 사용되는 읽기 전용 템플릿입니다. 컨테이너는 이러한 템플릿에서 생성되고 배포된 인스턴스(Deployed Instances)입니다.

 

https://scoutapm.com/blog/what-is-a-docker-container

 

예를 들면, 도커 이미지는 책을 출판하기 위한 원고와 비슷합니다. 책을 출판하기 위해서는 내용과 구조 등이 있어야 하는 것처럼 애플리케이션을 실행하기 위해서는 실행에 필요한 모든 정보가 포함되어 있어야 합니다. 즉, 도커 이미지는 애플리케이션을 실행시키기 위해 필요한 모든 정보를 갖고 있는 문서와 같은 것이에요.

반면에 도커 컨테이너는 책을 읽는 독자와 같습니다. 도커 이미지를 실행하면 도커 컨테이너가 생성되는데, 이 컨테이너 안에서 애플리케이션이 실행됩니다. 여러 개의 컨테이너가 동시에 실행될 수 있고, 각각의 컨테이너는 이미지를 기반으로 생성되며 독립적으로 실행돼요. 도커 컨테이너는 독립된 실행 환경을 제공하며, 하나의 이미지를 여러 번 실행할 수 있어요. 

 


도커 이미지 생성(Docker Image create)

 

먼저 도커 이미지를 만들기 위한 도커 파일(Dockerfile)을 작성해야 합니다. 도커 파일은 이미지를 만들기 위한 빌드 지시사항을 포함하고 있으며, 텍스트 파일로 되어 있고 이미지를 어떻게 구성할지를 정의합니다. 다음은 간단한 도커 파일의 예시입니다. 

 

# 베이스 이미지를 지정합니다.
FROM python:3.9-slim

# 작업 디렉토리를 설정합니다.
WORKDIR /app

# 호스트의 현재 디렉토리의 모든 파일을 컨테이너의 /app 디렉토리로 복사합니다.
COPY . /app

# 필요한 추가 패키지를 설치합니다.
RUN pip install --no-cache-dir -r requirements.txt

# 컨테이너가 시작될 때 실행될 명령어를 지정합니다.
CMD ["python", "app.py"]

# 컨테이너가 특정 포트를 listen하도록 설정합니다.
EXPOSE 5000

 

 

위의 도커 파일은 간단한 파이썬 애플리케이션을 실행하는 도커 이미지를 생성하는 파일입니다. 이제 위에 처럼 작성한 도커 파일을 다음 명령어를 입력해서 이미지를 빌드해 볼게요. 

 

$ docker build -t my-python-app .

 

도커 파일이 존재하는 디렉터리로 이동한 후에 'docker build' 명령어를 사용하면, 도커 이미지를 빌드하고 태그를 지정할 수 있게 됩니다. 

위에서 사용한 -t 옵션은 이미지에 태그를 지정하는 데 사용되는데, my-python-app이라는 태그를 사용한다는 의미입니다. 

마지막에 마침표의 의미는 현재 디렉터리를 의미하며, 도커 파일이 있는 디렉터리에서 실행해야 합니다. 

 


 

도커 이미지 실행(Docker Image execution)

 

 

도커 이미지를 실행시키려면 'docker run' 명령어를 사용해야 합니다. 이 명령어를 사용하면 도커 이미지를 기반으로 컨테이너를 생성하고 실행하게 되는데, 간단한 예시로 my-python-app 이미지를 실행한다면, 다음과 같습니다. 

 

$ docker run -p 80:80 my-python-app

 


컨테이너 확인(Docker Container confirm)

이제 도커 컨테이너가 생성되었는지 확인하는 방법은 'docker ps' 명령어를 사용하여 현재 실행 중인 도커 컨테이너를 확인할 수 있어요. 

 

CONTAINER ID   IMAGE         COMMAND                  CREATED         STATUS         PORTS       NAMES
ab12cd34ef56   my-python-app "python app.py"          5 minutes ago   Up 5 minutes   80/tcp      web_server

 


정리

 

이제 도커 이미지와 컨테이너가 무엇인지 알겠고, 도커를 이용해서 애플리케이션을 어떻게 실행시키고 확인하는지 알게 되었습니다. 요약하자면 실행시킬 애플리케이션을 도커 파일에 작성하는데, 양식에 맞춰서 작성을 해야 합니다. 양식에 맞춘 도커 파일을 생성하면, 해당 파일을 빌드를 시켜서 도커 이미지를 생성시킵니다. 이제 생성된 도커 이미지를 실행시키면 컨테이너가 생겨나고, 해당 컨테이너가 결국 실행 중인 인스턴스와 같은 거죠. 🤔  이제 정말 흐름이 어떻게 흘러가는지 알겠습니다. 🥲 다음에는 조금 더 신경 써야 하는데 부분 등을 공부해 봐야겠어요..