xtring's dev blog

1. 도커란 무엇인가?

Section 1) 도커란 무엇인가?

도커의 정체

도커를 잘 모르면 “편리해 보이지만, 뭔지 잘 모르겠다"는 이미지를 가지고 있다.

‘도커’ 개발 초기에는 BE를 중심으로 개발환경에서 사용됐으나, 지금은 운영 환경은 물론이고 FE의 개발환경에도 널리 도입되었다. -> 이제는 많은 곳에서 도커가 사용중이다.

도커는 ‘데이터 또는 프로그램을 격리시키는’ 기능을 제공한다

컨테이너와 도커 엔진

컨테이너를 만들려면 이미지가 필요함

도커는 리눅스 컴퓨터에서 사용

데이터나 프로그램을 독립된 환경에 격리해야하는 이유

데이터나 프로그램을 독립된 환경에 격리해야하는 이유?

프로그램의 격리란?

Section 2) 서버와 도커

도커를 설명하기 위해서는 서버 이야기를 하지 않을 수 없다

서버의 두 가지 의미

서버란 무엇일까? -> 어떤 서비스(service)를 제공(serve)하는 것

기능적 의미의 서버와 물리적 컴퓨터로서의 서버

서버의 두 가지 의미

서버 컴퓨터는 결국 우리가 사용하는 ‘컴퓨터’다. 개인용 컴퓨터는 개인이 사용하지만 서버는 여러 사람이 원격으로 접근해 사용한다.

서버의 기능은 소프트웨어가 제공한다

따라서 서버의 기능 역시 특별한 것이 없다.

서버의 기능은 소프트웨어가 제공하는 것으로, 소프트웨어를 설치하면 ‘서버’의 기능을 갖게 된다 즉, ‘무슨무슨 서버를 만든다’는 말은 ‘무슨무슨용 소프트웨어를 설치해 이 기능을 갖춘다’는 말과 같다. -> ‘여러 가지 소프트웨어를 한 컴퓨터에 설치할 수도 있다’

서버의 대표적인 예

서버의 대표적인 예

서버의 운영체제로는 주로 리눅스가 사용된다

개인용 컴퓨터와 서버는 크게 다르지 않다

윈도우 계열
	ㄴ Windows

유닉스 계열
	ㄴ 리눅스 계열
		ㄴ Red Hat, CentOS
		ㄴ Debian, Ubuntu
		ㄴ SUSE, openSUSE
		ㄴ 기타
	ㄴ BSD 계열
		ㄴ macOS
		ㄴ FreeBSD
		ㄴ NetBSD
	ㄴ 솔라리스 계열
		ㄴ Solaris, OpenSolaris
	ㄴ 기타...

컨테이너를 이용해 여러 가지 서버 기능을 안전하게 함께 실행하기

도커 환경에서 컨테이너를 사용하면 프로그램을 완전히 격리시킬 수 있다

컨테이너 기술을 활용하면 하나의 물리 서버에 여러 개의 웹 서버를 올릴 수 있다. 한 대의 서버에서 실행하던 웹 서버, 메일 서버, DB 서버를 각각 독립적인 환경에서 안전하게 운용할 수 있을 것이다.

하나의 물리 서버에 하나의 웹 서버를 띄우면 웹서버:물리서버=1:1 와 같은 형태로 구성된다. 필요한 용량이 크지 않은데 이러한 형태로 물리 서버가 많아지면 그 만큼 낭비가 발생한다. 만약, 두 웹 서버를 하나의 물리 서버에 함께 둔다면 프로젝트 하나의 비용이 절반으로 감소할 것이다.

질문?) 다양한 종류의 서버를 다수 개 운용 해야한다면 하나의 물리 서버 컴퓨터에 같은 종류의 서비스를 묶어 하나의 물리 서버에서 제공할까?

개발 측면에서 이점
개발환경을 갖추거나 운영 환경으로 쉽게 넘어갈 수 있다 -> 컨테이너가 그저 격리된 환경이 아니라 쉽게 옮길 수 있다는 특성에서 비롯됨

자유로이 옮길 수 있는 컨테이너

컨테이너는 자유로이 옮길 수 있다

-> 실제로는 컨테이너의 정보를 내보내기한 다음, 다른 도커 엔진에서 복원하는 형태 -> 이런 특성을 이용하면 동일한 상태로 튜닝한 컨테이너를 팀원 전원에게 배포해 모두가 동일한 개발환경을 사용할 수 있음

#docker