2021. 2. 2. 23:15ㆍDevelopment/[Server] 서버
지난해까지 주력 모바일 앱개발자에서, 이제는 본격적으로 서버 사이드 개발과 아키텍쳐링으로 업무를 전환하는 시점에서 본격적으로 시도하는 서버사이드 개발의 첫 관문, 도커를 소개하고자 한다.
도커란?
(위가 도커 이미지인데.. 고래위에 컨테이터를 적재했다고 동물학대라고는 안했으면 좋겠다...ㅜ)
나도 처음 서버개발을 시작했던 2011년도 즈음 겪었고, 이후에도 간간히 어깨너머로 봐온 상황이 있다. 개발회사에서 "서버 사이드 개발"을 하다보면 아마도 한번쯤은 아래와 같은 경험을 해보았을 것이다. (안해봤다면 좋은(?)회사~)
신이난다 신이나 흥이난다 흥이나 로컬 환경에서 코딩을 신명나게 하고나서 서버에 결과물을 처음으로 배포를 해야하는데, 아...그러고보니 나는 윈도우 PC인데 서버OS는 리눅스네.. (또는 아 나는 리눅스인데, 서버는 윈도우 환경이네...@#$^%#%^#@).
그래 다음부터는 나도 서버랑 같은 리눅스로 바꿔놓고 해야지. 아... 이런...서버에 첫 배포하려니 서버도 다시 처음부터 똑같이 셋팅해야하네......하아...
위와 같은 경험은 아주 극단적이지고 단편적인 예이지만, 충분히 일어날 수 있는 일이고 아직도 일어나고 있는 곳이 분명히 있다!
로컬과 서버가 똑같은 리눅스 환경, 똑같은 윈도우 환경이라고 해도 0 부터 100까지 모든게 동일하게 셋팅을 하려고 하면 분명 머리가 아파올 것이다.
그래서 대부분의 서버 사이드 개발회사들이 "도커"라는 프로그램(컨테이너)을 도입하기 시작했다.
컨테이너?
컨테이너는 영어 뜻 그대로 무언가를 담는 "그릇, 용기, 통" 등을 의미한다. 도커는 앞선 상황같은 것을 미연에 방지하고, 어느 환경이든 구애받지 않고 어플리케이션 환경을 그대로 푹(?)떠서 여기서 저기로 저기서 여기로 옮기는 컨테이너같은 역할을 한다. 그래서 도커는 곧 "컨테이너"라는 개념으로 통용된다.
그래서 위에서 말한 불상사들을 피하기 위해서 도커를 활용하면 좋은데,
만약 일반적인 유저라면 아마도 이러한 생각을 했을수도 있다.
음!? 그냥 버추얼박스 같은 가상머신 프로그램을 설치하면 되지 않나요~?
하지만, 가상머신은 우선 속도가 느리며, 해당 가상머신 속 OS는 자원을 심각하게 잡아먹는다. 이미 로컬 OS가 있는데 또 OS를 올려야하는 것이기도 하고...
그리고 서버에 버추어박스 같은 가상머신 프로그램을 띄워놓고 운영을 할수는 없지 않은가.....(있다면 충격....)
그래서,
도커를 사용하면 물리적 하드웨어의 자원을 가상머신보다 폭넓게 사용이 가능(OS의 커널을 공유)하며, 속도도 훨씬 빠르다.
더욱이 동일한 배포환경을 여러번 작업해야할때 옮기는 속도도 가히 획기적이다.
AWS, Google Cloud 가리지 않고 동일하고 쉽게 배포가 가능한 것은 기본이다.
도커에 대한 자세한 설명은 여기
우선 맥에서 도커를 설치해보자.
(1) 도커 설치
hub.docker.com/editions/community/docker-ce-desktop-mac
1) 우선 위 사이트에서 "Get Docker" 를 클릭하여 도커 파일을 다운받아 실행한다.
2) 다운받은 파일을 더블클릭하여 실행하고, 어플리케이션 디렉토리로 이동시킨다.
3) 도커 아이콘을 더블클릭하여 실행을 한번 해준다.
3) 여기까지 완료되면, 다음의 명령어를 순차적으로 터미널에서 실행한다.
*. 여기서는 맥에 도커를 활용하여 우분투 20.04 리눅스를 설치해본다.
1. 도커 이미지 다운로드
$ docker run ubuntu:20.04
2. 도커 컨테이너 생성
$ docker run --restart always --name ubuntu_20.04 -dt ubuntu:20.04
3. 실행중인 도커 컨테이너 목록 확인
$ docker ps
4. 도커 실행
(실행중인 도커가 없을때) $ docker run --rm -it ubuntu:20.04 /bin/bash
또는
(실행중인 도커가 있을때) $ docker exec -it ubuntu_20.04 /bin/bash
*. 실행시, 실행하는 호스트(맥)의 현재경로를 공유폴더로 지정하면서 시작하고 할때는 다음과 같이 실행한다.
$ docker run -it --volume="$PWD:/우분투의 원하는 공유 디렉토리 경로" ubuntu:20.04
사실 이렇게 맥에 도커를 만들었다는 것은 맥에서 리눅스인 우분투 환경으로 개발을 해서 우분투 서버에 배포를 동일하게 해보겠다는 의미인데, 순수(?) 리눅스 OS가 설치된 PC가 집에 없기때문에, 본 작업은 아이맥에서 진행했고 맥북도 동일하게 본 과정까지 진행해놓았다.
다음시간에는 다시 더 학습을 하여 본 맥에서 개발한 환경을 다른 맥 도커(사실은 리눅스라고 가정하고)에 손쉽게 배포를 해보고자 한다.
(이러한 도커 컨테이너를 여러개 관리하는 "쿠버네티스"도 학습예정!)
오늘도
Mission Accomplished!
+ 여담
최근에 환절기에 콧물이 나서 책상에 휴지통 하나를 들여놓으면 어떨까하고 생각하게 되었는데..때마침!
도커 각티슈!!
이 녀석을 인카토스측으로부터 협찬받게 되어 사용해보게 됐다.
무엇보다 디자인이 심플하고 흰색에 깔끔한 플라스틱 재질이라 가볍다. (진짜 도커 컨테이너 디자인 ㅎㅎ)
종이 각티슈를 사서 분리수거 쓰레기 계속 나오게 하는 것보다 리필용 휴지를 사서 이 곳에 계속 리필로 채우면서 사용하는게 더 환경을 위해서 좋지 않을까 하는 생각도 해본다.
특히 개발자들이라면 책상위에 뭔가 독특한 시그니처(?)같은 키보드나 마우스나 피규어나 그런것들이 하나씩쯤은 있을텐데
도커 각티슈라 그런지 그냥 평범한 종이재질의 각티슈 올려놓는 것보다 확실히 좀 더 "개발자스러움"을 더해준다.
포장도 깔끔하게 온다 (물론 부서지지않게 튼튼하게 안전포장돼서 온다)
뒤를 돌려보면 간단하게 조립하는 방법이 나와있는데, 컨테이너 조립하는 것처럼 끼워넣으며 조립해서 재미있다ㅎ
밋밋하지 않게 정말 컨테이너 느낌으로 디자인이 되어있어서 뭔가..
이 각티슈와 함께 이런 모양의 베어본PC케이스라든가 스피커라든가..
그런 다양한 시그니처 버전이 앞으로도 나오면 어떨까 생각해본다. (이미 있으려나!?)
이로서 맥에도 도커를 설치하고 책상에도 도커를 설치했다!
궁금하실까봐
공식 구매처는 인카토스 공식 홈페이지에서 구매하시면 될듯!
'Development > [Server] 서버' 카테고리의 다른 글
스프링 부트 : Restful API 서버 만들기 "TDD 단위테스트 추가" - 2 of ? (0) | 2020.07.10 |
---|---|
스프링 부트 : Restful API 서버 만들기 - 1 of ? (2) | 2020.05.15 |