docker 를 스터디하면서 느꼈던 docker 종류? 단계? 에 대해 끄적여 봅니다.

어디까지나 제가 docker 공부하면서 step by step으로 레벨업(?)한 과정을 서술 해 본 거라서
절대적인 기준은 아니고 제가 생각한 레벨 step이니 docker 공부하실 때 참고하세요.

 

 

레벨 1 : 기본, 입문 -> docker를 일단 사용해보자!

< 특징 >

  • 오피셜 docker hub에서 배포하는 docker image를 다운받아 container 실행해서 사용.
  • docker run … 아주 긴~ 한줄 명령으로 container 실행.

< 장점 >

  • official로 배포되는 docker image를 쉽게 설치해서 사용 가능.
  • docker 명령어 몇 개만 익혀도 바로 사용 가능.
  • 구글링이나 웹서핑 해보면 docker run 사용한 강좌 블로그를 쉽게 찾을 수 있음.

< 단점 (진입장벽) >

  • docker는 기본적으로 console 환경에서 실행/동작하므로, linux shell 명령 치는데 익숙해야 함.
  • 내가 필요한 service/app의 배포 docker image를 잘 찾는 것이 관건.
  • 나만의 docker container 셋팅은 가능하지만, 나만의 docker container 환경을 배포는 못함.
  • 여러 옵션들을 적용하기 위해서는 docker run 명령이 아주 길게 작성되야 함. (포트포워딩, 볼륨 개념 필요)

 

 

레벨 1.5 : 기본, 입문 ++ -> docker 실습 단계

< 특징 >

  • 1단계 통과하여 docker의 강력함에 매력을 느끼고 이것 저것 docker image 찾아서 엄청 설치하고 실습해보는 단계.
  • docker-compose 문법을 습득해서 docker run ... 의 긴~ 한줄 명령어에서 탈출.
  • docker-compose.yml 에 container의 여러 속성 간단하게 서술되어 있음.
  • docker-compose up/down/start/stop 등의 명령으로 container 간단히 컨트롤 가능.
  • Portainer docker container를 설치해서 web GUI로 docker 환경 셋팅 등 작업 가능.
  • 아직 2단계 전이라 docker container 사용하는 측면에 포커스 맞춰진 상태라서, 장/단점은 1단계랑 비슷해 생략.

 

 

tip. 레벨2부터는 개발자의 영역이라고 생각됩니다.
배포되는 서비스를 사용만하는 유저의 입장이시라면 도커로 이런것도 할 수 있구나 정도만 알고 넘어가셔도 될듯 합니다.

 

레벨 2 : 활용 -> docker 환경을 저장/백업하고 배포해보자

< 특징 >

  • docker 환경/서비스를 직접 구성하여 docker image 만들기.
  • docker commit 으로 containr를 docker image로 만들기.
  • docker save/load 으로 image 저장/불러오기. docker image 배포 가능.

< 장점 >

  • 내가 원하는 docker container 환경을 docker image로 만들어 배포/재사용 가능.
  • 사용하던 docker 컨테이너를 docker image로 저장해서 백업/재사용 가능.

< 단점 >

  • fixed 된 docker image 가 배포 되므로, 다른 사용자가 임의로 image 수정하기 어려움.
  • 배포하는 image에 추가 작업이 된 경우, image 용량이 점점 커짐.

 

 

레벨 3 : 고급 -> 도커 환경을 효율적으로 배포해보자.

< 특징 >

  • docker build를 사용하면 레벨 2의 단점을 해결할 수 있음.
  • docker build 명령으로 실시간으로 docker image 만들고 container로 실행하기.
  • dockerfile 을 작성해 놓고, docker build 명령으로 docker image 생성.

< 장점 >

  • dockerfile 스크립트가 배포 되고, 실시간으로 docker build 수행하여 docker image 생성됨.
  • 배포된 dockerfile을 수정하여 내가 원하는대로 docker image 수정/변경 가능.

< 단점 >

  • 실시간으로 dockerfile을 파싱하여 docker image를 빌드함. 빌드 시간이 소요됨.
  • 특정 repo나 package가 접속이 안되거나 사라져 apt install fail 된 경우 build error 발생함.
  • image build 성공하도록 수정 필요하므로 docker build 문법에 대한 이해 필요함.

 

 

레벨 4 : 전문가 -> 클라우드 서비스 배포/서비스하는 현업에서 필요한 기술로 추정.

< 특징 >

  • 여러 docker 컨테이너가 서로 연동해서 동작하도록 작성.
  • 여러 컨테이너가 서로 연동하여 클라우드 서비스 등 제공을 위해 도커스웜? 쿠버네틱스? docker 환경을 구성/배포하는 작업.

< 장점 >

  • 여러 가지 컨테이너가 서로 연동하며 동작하도록 docker image/container 구성 가능.
  • 예시로 Harbor가 쿠버네틱스로 배포되는 도커 서비스 중 하나입니다.
    https://sonhc.tistory.com/976 : [docker] harbor 사용법 #1
    https://sonhc.tistory.com/977 : [docker] harbor 사용법 #2 - docker client 설정 (insecure-registries)
    https://sonhc.tistory.com/978 : [docker] harbor 사용법 #3 - harbor 서버 image 연동 실습 (docker tag, push, pull)

< 단점 >

  • 취미로 docker 입문한 상황에서 쿠버네틱스와 도커스웜은 사용 할 일 없어서 아직 모르는 분야.
  • 레벨4는 저에게 미지의 영역으로 저도 궁금한 부분이라, 레벨4 전문가에 대한 설명은 다른 고수님께 부탁 드립니다.

 

이상입니다.

+ Recent posts