DOCKER에 대해 알아보자 (기본 정보)

회사 소프트웨어를 도커에 실어서 배포하고 있다. 지금은 편리하게 사용하고 있지만 한때는 도커가 뭔지도 몰랐다. 나 같은 사람에게 설명해주어야 할 때를 대비하여 도커가 무엇인지와 어떻게 사용하는지를 간략하게 정리해두려 한다.

도커란?

평소에 사용하는 PC를 하나의 박스라고 생각해보자. 이 박스 안에는 OS, Chrome, Notepad, MySQL, Spring… 따위가 존재할 것이다. 그리고 내가 원하는 데이터나 프로그램 몇 개를 모아서 담아 둔 또 다른 박스가 있다고 치자. 물론 OS(와 비슷한 것)까지 통째로 담아두기 때문에 내 PC처럼 이 박스 안에서 원하는 프로그램을 꺼내서 쓸 수 있다. ⇒ 이 또 하나의 박스를 컨테이너라고 한다. 그리고 이 박스에서 필요한 프로그램을 꺼낼 수 있게 도와주는 소프트웨어가 도커다.

도커 왜 씀?

그게 뭔지를 알고 나면 그걸 왜 써야 하는 지가 궁금해진다. 도커의 편리한 점은 다음과 같다.

  1. 어떤 서버에 새로운 소프트웨어를 배포한다고 생각해보자. 이 소프트웨어는 MySQL 5.7 DB에서만 동작한다. 그런데 이 서버에는 이미 깔려있던 다른 소프트웨어가 있다. 이 소프트웨어는 MySQL 8.0을 사용하고 있다. 이런 경우 어느 한쪽에 다른 쪽을 맞출 수 없다면 난처한 상황이 된다. 도커는 이런 경우에 유용하게 사용할 수 있다. 도커 컨테이너 안에 담겨 있는 프로그램들은 다른 컨테이너나, 도커 바깥의 프로그램과 별개로 동작하므로 온전히 컨테이너 내부의 환경을 유지하여 소프트웨어를 실행 시킬 수 있다.
  2. 소프트웨어마다 필요한 개발 환경이 다르다. 개발 팀원이 한 명 추가될 때 마다 일일이 이건 x.x버전으로 설치해주세요, 이건 x.x버전을 써요 하고 알려주어야 하는 건 번거로운 일이다. 도커는 컨테이너의 정보를 내보내고, 다른 도커 엔진에서 불러올 수 있는 기능이 있다. 이러한 특성을 이용하면 한 번 맞추어 둔 개발환경을 다른 팀원들이나 고객사 서버에 배포하여 간편하게 개발 환경을 마련할 수 있다.

도커를 사용하려면

도커 소프트웨어의 본체인 도커 엔진을 설치한 후 → 도커 엔진을 통해 컨테이너를 생성하고 사용할 수 있다. 컨테이너는 용량이 허락하는 한 여러 개를 만들 수 있다.

컨테이너를 생성하려면

동료가 물건 담을 박스 좀 가져다 달라는 부탁을 했다고 치자. 그냥 아무 박스나 가져다주면 될까? 어떤 물건을 담을 지에 따라 적당한 박스가 달라질 것이다. 컨테이너도 마찬가지다. 컨테이너에 담을 소프트웨어의 종류에 따라 컨테이너의 규격이 달라진다. 이 규격을 이미지라고 부른다. 컨테이너에 MySQL을 넣으려면 MySQL이미지를, 아파치를 넣으려면 아파치 이미지를 사용해야 한다.

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

Tomcat과 MySQL과 웹배포파일이 들어있는 컨테이너가 있다. 이 환경을 다른 도커에도 똑같이 구성하기 위해 각각의 이미지들을 따로 추가해 줄 필요가 없다. 이 컨테이너를 통째로 하나의 이미지로 만들면, 이 커스텀 이미지를 넣는 컨테이너를 만들 수 있다. 개발 환경에서 사용하던 컨테이너를 이미지로 만들어서 운영 환경 컨테이너로 만들면 운영 서버에 환경을 마련하기가 훨씬 편해질 것이다.


도커 사용 시 제약사항

  • 도커는 리눅스 운영체제를 사용해서 구동해야 한다. 윈도우 환경에서 도커를 구동할 수도 있지만, 이 경우 내부적으로 리눅스가 사용된다(VM등을 통하여 실행)
  • 컨테이너에서 동작시킬 프로그램도 리눅스용 프로그램이다.

도커 이미지는 어디서 구하나요?

컨테이너에 MySQL을 넣고 싶은데 MySQL 이미지는 어디에서 구해야 하나요? ⇒ 도커 허브라는 곳에서 구하면 된다. 공식적으로 운영되는 도커 이미지 배포 사이트이다. 도커 이미지 계의 구글 플레이 스토어라고 생각하면 된다.