Docker

신윤섭·2023년 1월 29일
0

오늘 떠들어 볼 주제는 도커(Docker)이다. 하도 많이 들었지만 써보지는 못했던 도커에 대해 정리해두고 나중에 써먹어야겠다.

Docker?

도커(Docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다.

도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다.

여기서 말하는 컨테이너는 정말 화물선에 싣는 컨테이너와 같은 개념이다. 컨테이너 안에는 옷, 신발, 전자제품, 술, 과일 등 다양한 화물을 넣을 수 있고 규격화되어 컨테이너선이나 트레일러 등 다양한 운송수단으로 쉽게 옮길 수 있다.

서버에서 말하는 컨테이너도 이와 비슷한데 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해준다. 백엔드 프로그램, 데이터베이스 서버, 메세지 큐 등 어떤 프로그램도 컨테이너로 추상화할 수 있고 조립PC, AWS, Azure, Google Cloud 등 어디에서든 실행할 수 있다.

Container(컨테이너)

컨테이너는 격리된 공간에서 프로세스가 동작하는 기술이다.
가상화 기술의 하나이지만 기존 방식과는 차이가 있다.

왼쪽은 기존 가상머신의 방식이고 오른쪽은 도커가 기반으로 하는 컨테이너 방식이다. 가상머신은 각각의 Guest OS가 존재하여 하드웨어를 공유한다. 이는 상당히 무겁고 느리다. 반면 컨테이너 방식은 독립적인 각각의 컨테이너가 존재하고 이를 Docker Engine이 관리하여 어떠한 컨테이너도 어떠한 운영체제에서 실행시킬 수 있다.

하나의 서버에 여러 개의 컨테이너를 실행하면 서로 영향을 미치지 않고 독립적으로 실행되어 마치 가벼운 VM을 사용하는 느낌을 준다.

Image(이미지)

이미지는 도커에서 컨테이너와 함께 가장 중요한 개념이다.

  • 이미지는 컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있는 것으로 상태값을 가지지 않고 변하지 않는다.
  • 컨테이너는 이미지를 실행한 상태라고 볼 수 있고 추가되거나 변하는 값은 컨테이너에 저장된다.
  • 같은 이미지에서 여러개의 컨테이너를 생성할 수 있고 컨테이너의 상태가 바뀌거나 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아있다.
  • 이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 더이상 의존성 파일을 컴파일하고 이것저것 설치할 필요가 없다.
  • 도커 이미지는 Docker Hub에 등록하거나 Docker Registry 저장소를 직접 만들어 관리할 수 있다.

결론

도커는 서버가 어떻든 OS가 뭐든 간에 수십, 수백, 수천 개의 컨테이너를 사용할 수 있다. 복잡한 환경 설정을 편하고 빠르게 할 수 있다. 심지어 하나의 서버에서 컨테이너에 담긴 서버 여러 개를 실행시켜 서버를 늘릴 수도 있다.

개념은 이정도로 정리하고 다음 시간에는 도커를 직접 사용해 보겠다.

0개의 댓글