Docker란?

artp·2024년 9월 22일

docker

목록 보기
1/6
post-thumbnail

Docker란?

Docker는 애플리케이션이 어떤 환경에서도 동일하게 실행될 수 있도록 도와주는 플랫폼입니다.
예를 들어, 개발할 땐 Mac을 쓰고, 서버는 Linux를 사용하더라도 Docker를 이용하면 환경 차이에 대한 걱정 없이 실행할 수 있습니다.

Docker를 사용하는 이유

Docker는 애플리케이션을 컨테이너(Container) 라는 독립된 환경에서 실행할 수 있게 해주는 도구입니다. 이를 통해 얻을 수 있는 대표적인 장점은 다음과 같습니다.

이식성

Docker는 컨테이너라는 독립된 환경 안에서 애플리케이션을 실행합니다. 이 컨테이너는 운영체제에 종속되지 않기 때문에, 개발 환경, 테스트 환경, 운영 환경 등 어떤 환경에서도 동일하게 애플리케이션이 동작합니다.

  • 한 번 개발하면 어디서나 실행 가능
    ❗️ 이식성: 특정 프로그램을 다른 환경으로 쉽게 옮겨서 설치 및 실행할 수 있는 특성

일관성

Docker 이미지는 애플리케이션 실행에 필요한 설정, 종속성, 라이브러리 등을 모두 포함하고 있어, 환경 차이로 인한 문제를 최소화할 수 있습니다.
운영체제나 버전 차이, 설정 누락 같은 이슈 없이 항상 동일한 환경을 보장합니다.

확장성

Docker는 마이크로서비스 아키텍처를 손쉽게 구성할 수 있게 도와줍니다. 여러 개의 컨테이너를 클러스터링하여 관리할 수 있어, 서비스 확장이나 분산 처리에 유리합니다.

경량성

Docker는 가상 머신에 비해 훨씬 가볍습니다. 운영체제를 전체로 복사하지 않고 필요한 부분만 격리하기 때문에 리소스를 적게 사용하며, 실행 속도도 빠릅니다.

효율적인 개발 환경

개발자들이 동일한 환경을 손쉽게 구축할 수 있어, 환경 설정에 드는 시간을 줄이고 개발에만 집중할 수 있습니다.

Container(컨테이너)란?

컨테이너란?

컨테이너는 애플리케이션과 그 실행에 필요한 라이브러리, 설정 등을 하나의 독립된 패키지로 묶은 것입니다.

마치 상자 안에 실행 환경을 담아 어디에서든 똑같이 작동하도록 만든 것입니다.

컨테이너는 전체 운영체제를 포함하지 않고 필요한 부분만 격리하기 때문에 가볍고 빠르며, 독립적인 환경을 제공합니다.

❗️ 컨테이너 = 하나의 컴퓨터 환경 내에서 독립적으로 동작하는 '미니 컴퓨터'

호스트 컴퓨터와 컨테이너


위 그림에서 보이는 컴퓨터는 호스트 컴퓨터입니다. 이 호스트 컴퓨터는 여러 개의 컨테이너를 실행하고 있습니다.

  • 호스트 컴퓨터: 컨테이너를 구동시키는 실제 컴퓨터(또는 서버)
  • 컨테이너: 독립된 애플리케이션 실행 환경 (라이브러리, 설정 등 포함)

컨테이너는 가상화된 작은 독립 환경이고, 호스트 컴퓨터는 이 컨테이너들이 실행되는 실제 하드웨어 또는 가상화된 컴퓨터입니다.

  • 개발자가 로컬에서 사용하는 컴퓨터가 컨테이너를 구동하면 이 컴퓨터가 호스트 컴퓨터입니다.
  • 반대로 AWS, GCP 같은 클라우드 서버에서 컨테이너를 실행하면, 클라우드 서버가 호스트 컴퓨터입니다.

컨테이너의 특성

  • 디스크(저장 공간): 각 컨테이너는 자신만의 저장 공간을 가지고 있습니다. 일반적으로 A 컨테이너 내부에서 B 컨테이너 내부에 있는 파일에 접근할 수 없습니다 (다른 컨테이너의 파일에 접근할 수 없음).
  • 네트워크(IP, Port): 각 컨테이너는 고유의 IP와 Port를 가지고 있습니다.

컨테이너는 어디서든 실행될 수 있으며, 이 컨테이너를 구동하는 환경(컴퓨터 또는 서버)을 호스트 컴퓨터라고 부릅니다.

Image(이미지)란?

이미지는 컨테이너를 만들기 위한 설계도(Template)입니다.
애플리케이션과 필요한 실행 환경, 설정 등을 포함한 파일로, 이 이미지를 기반으로 컨테이너가 생성됩니다.

  • 이미지는 변하지 않는 불변 객체입니다.
  • 하나의 이미지로 여러 개의 컨테이너를 만들 수 있습니다.
  • 이미지에는 프로그램 실행에 필요한 설치, 설정, 버전 정보가 모두 포함되어 있습니다.

Docker 실습(Nginx 설치 및 실행)

1. Docker를 설치합니다.

2. 터미널을 열고 명령어로 Docker를 조작합니다.

3. 아래 명령어로 Nginx 이미지를 다운로드합니다.

$ docker pull nginx

4. 아래 명령어로 이미지가 잘 다운로드되었는지 확인합니다.

$ docker image ls

  • lslist의 약자입니다.

5. 아래 명령어로 컨테이너를 실행합니다.

$ docker run --name webserver -d -p 80:80 nginx
  • --name webserver: 컨테이너 이름을 webserver로 지정
  • -d: 백그라운드 모드로 실행
  • -p 80:80: 포트 포워딩 (호스트의 80번 포트를 컨테이너의 80번 포트에 연결)

6. 브라우저 주소창에 localhost:80 을 입력하여 Nginx 서버가 실행 중인지 확인합니다.

7. 아래 명령어로 실행 중인 컨테이너 목록을 확인할 수 있습니다.

$ docker ps

8. 아래 명령어로 컨테이너를 정지합니다.

$ docker stop webserver

profile
donggyun_ee

0개의 댓글