tags
자기개발
자료공유
2020
author
description
서버 관리의 신세계를 보기주기 위한 @Jeong Young Lee 님의 야심찬 Docker 강사님 초빙!!
created_at
Feb 11, 2022 07:46 AM
priority
published
published
published_at
Oct 12, 2020
updated_at
Mar 7, 2022 12:57 AM
흔히 도커를 써본 사람들은 이게 그렇게 편하고 좋다고 극찬해서
어느 정도 기본지식과 지식 확장의 가능성을 열어두기 위해 강사님을 초빙하게 되었습니다.
강의에 참여해주신 강사님은 누구나 알만한 축구게임을 개발한 유명 외국계 게임회사의 서버 개발자이십니다.
Docker를 전파하기 위해서 흔쾌히 강의 초청에 응해주셨습니다.
Docker 강의 후기에 앞서 우선 도커가 무엇인지부터 알 필요가 있습니다.
 

1. 도커란?


notion image
도커는 컨테이너 기술을 바탕으로 애플리케이션의 개발, 배포, 실행할 수 있는 개발자 및 시스템 관리자를 위한 플랫폼입니다.
 

2. 도커가 없다면


예를 들어 오늘은 서버를 세팅하는 날이라고 생각해 봅시다.
서버를 세팅하기 위해 개발자들은 엄청난 시간과 노력을 들여 서버를 세팅하려고 하겠죠.
설치 매뉴얼은 길고, 성공적으로 설치하지 못할 확률도 있습니다. 제대로 설치되지 않으면 다시 OS를 설치하고 재설치하는 삽질의 연속이죠.
힘들게 밤을 새워 재설치에 성공했다고 했을 때, 서버 설치에 달인이 되었다고 생각하는 순간 또 다른 서버를 설치해야 하는 상황이 옵니다.
익숙해져 있다고 생각하고 있다가 설치하려는 OS의 버전이 달라지거나, 환경이 조금만 달라져도 다시 새로운 삽질이 열리게 됩니다.
또 하나의 서버에 여러 개의 프로그램을 설치하는 것도 문제인데, 서로 사용하는 라이브러리의 버전이 다르거나 동일 한 포트를 사용하는 경우는 설치가 굉장히 까다로웠습니다.
차라리 서로 다른 서버에 설치하는게 나았죠.
이렇게 서버 설치는 매우 예민하고 신경 쓸게 한두 개가 아닌 작업입니다
 

3. 도커를 사용하는 이유?


먼저 도커의 중심 용어에 대해 알아봅시다.

Image (이미지)

이미지는 애플리케이션 구동에 필요한 모든 것을 코드, 라이브러리, 환경변수 등을 포함한 패키지 입니다.
즉, 도커는 이미지를 실행하여 애플리케이션을 구동한다 라고 할 수 있습니다.

Layer (레이어)

레이어는 파일 시스템의 변경사항을 저장한 것입니다. (깃에 익숙하다면 깃의 그것과 비슷)
읽기만 가능하고 파일 시스템의 변경 사항이 발생하면 새로운 레이어가 올라갑니다.
즉 현재 상태는 루트 파일 시스템의 변경 사항들이 순차적으로 겹친 상태이죠.

Container (컨테이너)

컨테이너는 이미지를 실행을 통해 만들어지는 런타임 인스턴스입니다.
컨테이너(생성된 인스턴스)는 호스트(OS)와 동일한 커널-운영체제 자원을 공유하면서 각 프로세스를 격리하여 실행합니다.
다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해줍니다.
백엔드 프로그램, 데이터베이스 서버, 메시지 큐등 어떤 프로그램도 컨테이너로 추상화할 수 있고 조립PC, AWS, Azure, Google cloud등 어디에서든 실행할 수 있습니다.
도커 아키텍쳐
도커 아키텍쳐
도커의 경우 커널 공간을 공유하며 소프트웨어를 가상화하는 것으로 VM보다 상대적으로 가볍습니다.
그리고 컨테이너를 지원하는 어떤 환경에서든 실행 가능, 동일 이미지 간 완벽한 호환성 보장, 환경 의존적인 실행방법 공유로 쉬운 관리, 컨테이너 수를 늘리는 것만으로 Scale Out 가능 등 놀라운 편의성을 지닌 도구입니다.
위에 설명한 정보들을 이용하여 우리는 서버 관리를 효율적이고 쉽게 관리할 수 있다는 것을 알게 됐습니다.
도커가 없다면 위에서 말했던 끔찍한 작업을 밤을 새워가며 완성시켜야 하며, 재설치에 성공하더라도 그 작업들을 일일이 기억하고 다음 작업에서 참조하여 성공시켜야 합니다.
하지만 도커를 이용해 기본 재설치한 설정을 이미지로 만들어 관리할 수 있고 그 이미지로 컨테이너를 실행하게 되는 것이죠.
컨테이너는 독립적으로 실행되어 하나의 서버에서 여러 개의 컨테이너에도 각각 영향을 미치지 않아 마치 가벼운 VM을 사용하는 느낌을 줍니다.
컨테이너를 가장 잘 사용하고 있는 기업은 구글인데 2014년 발표에 따르면 구글은 모든 서비스들이 컨테이너로 동작하고 매주 20억 개의 컨테이너를 구동 한다고 합니다.
 

4. 사용법


이미지를 만드는 방법

  • Docker Build (DockerFile)
    • notion image

도커 이미지를 가져오는 방법

  • Docker Pull
    • notion image
  • Docker Run
    • notion image
      notion image

도커 이미지를 수정하는 방법

  • Docker Commit, Tag, Push
    • notion image
  • Mapping Ports & Run as a daemon
    • notion image

Log를 보는 방법

  • Docker Logs
    • notion image

마무리


세미나에 앞서 세팅 중인 모습
세미나에 앞서 세팅 중인 모습
열심히 강의해주신 강사님께 감사!
열심히 강의해주신 강사님께 감사!
 
사내에서 첫 세미나를 진행한 만큼 어떤 시간이 될지 기대와 설렘으로 참석하였습니다.
세미나의 특성상 짧은 시간 동안에 특정 기술을 모두 습득할 수 있진 않지만 거기서 얻은 힌트로 앞으로 개발 하는 데에 큰 도움이 될 것 같습니다.
몇몇 분은 신세계를 본 듯한 표정이었네요 😊
바쁘신 와중에 강의해주신 강사님, 세미나 참석해주신 개발자분들 모두 수고 많으셨습니다!
 
이후, ZiPIDA 에서는 Docker를 적용했다고 한다. 개발자들 화이팅! 👏