xtring's dev blog

2. 도커의 동작 원리

Section 1) 도커의 동작 원리

도커의 동작 원리를 설명한다

도커의 구조

일반적인 서버라면 운영체제 위에 프로그램이나 데이터가 직접 올라가겠지만 도커를 사용하는 경우에는 운영체제 위에 도커 엔진이 동작하고 그 위에서 컨테이너가 동작한다 -> 프로그램이나 데이터는 컨테이너 안에 위치한다. 그런데 데이터는 컨테이너 안, 밖에 위치하는 것이 있다. 뒤에서 설명…

컨테이너가 운영되가 위한 구조 [컨테이너1] | [컨테이너2] | [컨테이너3] | …

컨테이너 안에서는 운영체제 ‘비슷한 것’이 들어있다

컨테이너 속은 어떤 구조로 돼 있을까?

컨테이너에 넣는다 -> ‘텅 빈 컨테이너 인가?’

운영체제가 하는 일은 뭘까?

컨테이너

운영 체제는 ‘커널’이라는 부분‘그 외의 주변 부분’ 으로 구성된다 -> 주변 부분이 프로그램의 연락 내용을 커널이 하드웨어를 다룬다

컨테이너-리눅스가 통신하는 과정 도커에서는 컨테이너가 완전히 분리됨

도커는 기본적으로 ‘리눅스용’

윈도우와 macOS에서 도커 구동하기

위 설명에 따르면 윈도우와 macOS 운영체제를 사용하는 컴퓨터는 도커를 사용할 수 없어야 한다. 이런 경우 VirtualBox나 VMware과 같은 가상 환경 위에 리눅스 운영체제를 설치하로 그 위에서 도커를 실행하거나 운영체제 전용 ‘도커 데스크톱’ 처럼 도커를 실행하는데 필요한 리눅스 운영체제를 포함하는 패키지를 설치해 사용하는 두 가지 방법이 있다.

Section 2) 도커 허브와 이미지, 그리고 컨테이너

이미지는 컨테이너를 만드는 ‘빵틀’과 같은 것이며, 도커 허브는 인터넷 상에 도커 이미지를 모아놓은 것. 도커의 장점은 도커 허브와 도커 이미지에서 기인하는 바가 크다.

이미지와 컨테이너

이미지는 금형과 같다

컨테이너로도 이미지를 만들 수 있다

도커 엔진 간에 이동이 가능하다

도커 허브와 도커 이미지

도커 허브에는 어떤 이미지가 공개되어 있을까?

안전한 컨테이너 이미지를 고르는 방법

도커 허브에는 안전하지 않은 이미지가 있을 수 있음

다양한 형태로 조합이 가능한 컨테이너

컨테이너는 이미지의 선택 외에도 다양한 조합을 고려해야 한다.

도커를 사용할 때의 원칙

!‘운영체제(비슷한 것)‘을 한 종류로 통일해야 할까?

호스트 컴퓨터와 컨테이너에서 각각 다른 배포판을 사용해도 괜찮을까? -> 호스트 컴퓨터-컨테이너(또는 컨테이너) 간의 배포판이나 버전 차이가 있더라도 문제가 없다. 컨테이너끼리 서로 다른 배포판을 사용할 수 있다는 것이 도커의 매력 중 하나이다.

Section 3) 도커 컨테이너의 생애주기와 데이터 저장

도커 컨테이너의 생애주기를 알아본다. 컨테이너는 ‘오랫동안 아껴 쓰는’ 물건이 아니라 ‘그때그때 쓰고 버리는’ 일회용품에 가깝다. 이 점을 이해해야 컨테이너 기술을 제대로 활용할 수 있다

도커 컨테이너는 ‘쓰고 버리는’ 일회용품

컨테이너의 설명을 듣다 보면 ‘컨테이너의 수명’ 또는 ‘컨테이너의 생애주기’라는 이야기가 반드시 나온다. 그 이유는 컨테이너는 ‘쓰고 버리는’ 일회용품 같은 것이기 때문이다.

데이터 저장

Section 4) 도커의 장점과 단점

도커의 구조와 성질 및 그 장단점

도커의 성질

'환경을 격리할 수 있음'
ㄴ 독립된 환경
	ㄴ (프로그램을)여러 개 띄울 수 있음
		ㄴ 똑같은 애플리케이션도 여러 개 띄울 수 있음
ㄴ 이미지를 만들 수 있음
	ㄴ 도커 레지스트리(도커 허브)
		ㄴ 이미지를 내려받기만하면 됨
			ㄴ이미지를 직접 만들지 않아도 됨
		ㄴ 교체하기 쉬움
			ㄴ 업데이트가 쉬움
			ㄴ 소프웨어 교체가 쉬움
	ㄴ 이동이 편리함
		ㄴ 똑같은 컨테이너를 쉽게 만들 수 있음
			ㄴ 환경 이동이 쉬움
			ㄴ 개발환경을 배포하기 쉬움
ㄴ 커널이 없음
	ㄴ 가벼움
	ㄴ 배포판을 바꿀 수 있음

‘환경을 격리할 수 있다’는 것이 핵심

도커의 장점과 단점

도커의 장점은 ‘여러 개’, ‘이동성’, ‘생성’, ‘보안’이라는 키워드로 나타낼 수 있다.

도커의 장점

1) 한 대의 물리 서버에 여러 대의 서버를 띄울 수 있다
2) 서버 관리가 용이하다
3) 서버 고수가 아니어도 다루기 쉽다

도커의 단점

도커의 주 용도

팀원 모두에게 동일한 개발환경 제공하기(=동일한 환경을 여러 개 만들기)

새로운 버전의 테스트(=격리된 환경을 이용)

동일한 서버가 여러 대 필요한 경우(=컨테이너 밖과 독립된 성질을 이용)

#docker