• 돌아가기
  • 아래로
  • 위로
  • 목록
  • 댓글

도커(Docker) 란 무엇인가? + docker-compose

달소 달소 3020

8

16

안녕하세요. 달소입니다.

사실 약 1년전쯤에 도커에 관해서 글을 작성했었는데 그때는 회원으로 저만 활동할시기라 ㅎㅎ 많이들 안보시고 그냥 지나치셨을거라 생각합니다.

 

초보나스 님께서 질문해주신 건도있으니 이전에 썼던 글 보다는 좀더 상세히 작성되도록 노력해보겠습니다.

 

선 요약 결론

도커는 기존에 설치된 OS(윈도우,Linux,헤놀로지,시놀로지)등에 구애받지않고 새로운 서비스를 올리기에 가장 좋은 방법입니다.
도커라는 플랫폼만 설치되어 있다면 이미 생성된 이미지를 통해 각 상황에 맞춘 커스텀 컨테이너를 완벽히 생성할 수 있으며 각 컨테이너들끼리의 통신만 필요한 경우 격리된 네트워크 환경을 만들기에도 용이합니다.

 

간단하게 도커에 대한 이해만 하신다면 이미 만들어진 많은 이미지를 통해서 웬만한 서비스들은 다 이용하실 수 있을거라 생각합니다.
*wordpress,nextcloud, nginx, web, wireguard, 각종vpn 서비스 등등

 

심화과정으로는 쿠버네티스, 도커스웜등이 있는데 이 부분은 제 지식이 모자라기때문에 ㅎㅎ 추후에 작성해보겠습니다.

도커란 ?

도커를 이해하시려면 이전에 나온 가상화의 개념부터 이해하시는편이 좋을거라고 생각합니다.
기존의 가상화란 제한된 하드웨어 환경에서 여러가지 OS 및 서비스를 구축하기 위해 하이퍼 바이저 위에 각각의 OS를 따로 구축해서 사용했었습니다.

이렇게 가상머신 위에 사용하다보니 자연스레 각각의 Virtual Machine마다 OS를 설치해 주어야했고 OS가 사용하는 리소스가 따로 소모되기 때문에 낭비되는 자원이 상당히 많았으며 OS버전의 EOS(End Of Service)가 만료될 경우 신규 OS를 설치하고 거기에 다시 App을 설치하려면 꽤나 복잡하고 호환성도 테스트 해야되는 많은 번거로움이 있었습니다.

그래서 2013년 출시된 도커는 다른방향으로 구현이 됐습니다

여러개의 Guest OS에서 각각의 App을 띄우는게 아닌 하나의 종속된 OS에서 Docker 위에 각각의 컨테이너에 App을 하나씩 띄우게 되면서 OS 커널을 다른 컨테이너와 공유 할 수 있으며, 각 컨테이너는 사용자 공간에서 격리 된 프로세스로 실행됩니다. 컨테이너는 VM보다 적은 공간을 차지하고 적은 리소스를 사용하기 때문에 효율이 더 좋아졌습니다.

 

이미지&컨테이너

기본적으로 도커에서 이미지&컨테이너는 도커를 효율적으로 사용하게끔 도와주는 기능입니다.

이미지

먼저 이미지는 OS image와 같다고 보시면됩니다.
Windows OS를 설치할때 ISO파일을 보셨듯 ISO로 설치되는 윈도우에는 기본적으로 윈도우에 필요한 모든것들이 설치되어있습니다.
마찬가지로 도커에서 사용되는 각각의 이미지들에는 이미지이름에 맞춰필요한것들이 기본적으로 설치되어있으며 추가적으로 필요한경우 직접 이미지에 필요한 툴을 추가설치해서 새로운 이미지를 만들수도있습니다.

 

예를들어 hub.docker.com에 있는 ubuntu 이미지를 예를 들어 설명드리겠습니다.

위 도커 이미지를 사용해서 컨테이너를 생성하게 된다면 기본적으로 Docker위에 Ubuntu 환경이 구축되는것이며 이미지를 생성할때 apt install nginx 과정을 추가한다면 Ubuntu + Nginx의 이미지가 생성되는것 입니다.

 

다만 ubuntu 이미지 자체가 용량이 꽤나 크고 무거운 이미지에 속하므로 nginx만 docker로 사용하려면 아래처럼 nginx 공식이미지가 따로있습니다.

공식이미지의 경우 문서를 보면 OS Layer가 어떤걸로 사용됐는지 나와있습니다.


가벼운 OS종류인 Alpine 이나 데비안 종류가 많이 사용되는거같네요.

컨테이너

컨테이너는 위에 말씀드린 이미지를 통해서 만들어진 결과물(?) 이라고 보시면 될거같습니다.

기존 VM이 하나 생긴다고 이해하시면 될것입니다.

아래 컨테이너를 보면 도커의 관리를 도와주는 portainer이미지로 만들어진 컨테이너임을 확인할 수 있습니다.
사용하고 있는 port나 언제 생성되었는지 정보도 포함되어있네요.

portainer를 이용하면 도커에서 실행되는 컨테이너, 이미지등을 편하게 확인할 수 있기때문에 저 처럼 초보자 분들께는 추천드리는 이미지입니다.

각각의 컨테이너는 용도에 맞춰서 만들어주고 잘 배치해주면 하나의 OS 하나의 Docker아래 여러가지 서비스를 쉽게 운영할 수 있으며
추후에 OS환경, 클라우드 환경을 바꾸더라도 쉽게 마이그레이션 할 수 있습니다.

 

Docker-compose 란?

추가적으로 댓글에 달린 섭린이님이 말씀하신 docker-compose에 관한 간단한 설명도 첨가하고자합니다.

docker-compose는 docker를 사용하는 방법중 하나로 docker의 많은 설정값들을 설정파일하나(docker-compose.yml)에 저장해서 간단한 up/down 명령어로 실행되게끔 도와줍니다.

예를들어 wireguard의 docker를 실행한다고했을때 기본 도커 명령어로는 아래처럼 긴 명령어를 쳐야하고 컨테이너를 중지하고 재 실행시키기 위해서는 컨테이너 id를 확인하고 다시 중지/실행시키는 과정이 필요합니다.

여기서 docker-compose를 사용한다고 한다면 위와같은 옵션에 대한값들을 docker-compose.yml에 모두 저장한 다음

실행 중지시에 docker-compose up -d / docker-compose down 과 같은 명령어를 통해 컨테이너의 실행/중지를 모두할 수 있게됩니다.

변경값이 필요하다고한다면 해당 config값만 수정하고 down/up만하면되니 더 간편하구요

처음 사용하신다면 다소 생소하실수도있지만 일일히 설정값을 기억하지않고 문서로 작성만해놓아도 되기때문에 마이그레이션때도 훨씬 편합니다.

설치 방법

설치방법은 기본적인 Linux OS인(Cent OS, Ubuntu)부터 윈도우, 라즈비안, 헤놀로지 등등 많은 버전이 있기때문에 자신이 구축한 환경에 맞춰서 설치하시면 됩니다.

  안녕하세요. 달소입니다. 오늘은 Docker를 스크립트를 통해 도커 최신버전을 1분만에 설치하는방법입니다.   기존에 작성했던 글도있지만...
달소 | 2022.01.13

 

신고공유스크랩
16
1등
Meksa 2022.02.11. 13:32

도커는 아직도 잘모르겠어요. 하지만 글은 정말 도움되었습니다

profile image
달소 글쓴이 2022.02.11. 13:51
소나무

얕은지식인지라.. 구글링하면 더 자세히 나와있긴합니다 ㅎㅎ

간단히만..ㅎ

섭린이 2022.02.11. 18:02

최근에 와이어가드 서버 설치한다고 도커 사용했는데 왜 여태 안썻는지 후회중입니다.. 컴포즈인가.. 이건 사용법을 모르겠더라구요..

profile image
달소 글쓴이 2022.02.11. 18:05
섭린이

docker-compose는 docker를 실행할때 필요한 config를 문서화 한것이라고 보시면 됩니다.

원래 docker run xxxxxxxxxxxxxxxxxxxx라고 길게 작성하는 명령어를 문서로 만들어서 up down 만 하면 되게끔요

이부분도 내용에 추가해야겠군요 ㅎㅎ

profile image
달소 글쓴이 2022.02.11. 18:13
섭린이

내용도 추가했습니다! 크게 다른내용은 없지만 ㅎㅎ 건의사항 반영입니닷

profile image
초보나스 2022.02.11. 23:26

아직 도커를 잘모르지만 천천히 차근차근 글읽어보면 도움이 뒬거같아요 달소님 감사합니다

profile image
달소 글쓴이 2022.04.17. 18:26
초보나스

헤놀에서 설치하시는걸말씀하시는걸까요??

아니면 일반리눅스일까요?

시놀로지의 경우 패키지센터에서 도커 검색하셔서설치하시면됩니다 ㅎㅎ

밍구 2022.02.19. 04:48

와.. 시놀쓰면서 도커 한 번도 안써봤는데 한 번 써봐야겠네요 감사합니다! 뭔가 용기가 생겼습니다.

댓글 쓰기 권한이 없습니다. 로그인

취소 댓글 등록

cmt alert

신고

"님의 댓글"

이 댓글을 신고하시겠습니까?

댓글 삭제

"님의 댓글"

삭제하시겠습니까?


목록

공유

facebooktwitterpinterestbandkakao story
번호 분류 제목 글쓴이 날짜 조회 추천
질문 적용 방법을 모르겠습니다?? 10 초보나스 1일 전08:05 211 +1
잡담 php가 벌써 8.36까지 나왔습니다. 5 달소 2일 전23:39 190 +2
질문 proxmox ssd 인식이 갑자기 안됩니다 고장인걸까요? 3 kmw_ 5일 전09:37 192 +1
3854 질문
normal
서버구축하자 2시간 전13:09 119 0
3853 질문
image
미스터빈 19시간 전20:09 151 0
3852 질문
image
초보나스 1일 전08:05 211 +1
3851 질문
normal
웹서버구축관심 2일 전02:22 289 0
3850 잡담
normal
달소 2일 전23:39 190 +2
3849 질문
normal
게르노 3일 전03:11 179 0
3848 질문
image
감자칩 3일 전20:04 273 0
3847 질문
normal
ljr10 3일 전19:45 191 0
3846 질문
image
TANG 4일 전11:33 217 0
3845 질문
normal
감자칩 4일 전18:55 147 0
3844 질문
normal
숲형 5일 전11:21 273 0
3843 질문
image
kmw_ 5일 전09:37 192 +1
3842 질문
normal
bass9030 5일 전00:43 137 +1
3841 잡담
normal
칼룬 5일 전18:12 273 +1
3840 질문
normal
늘맑음 6일 전15:10 241 +1
3839 질문
image
게르노 6일 전12:26 88 0
3838 잡담
normal
bong90a 6일 전10:50 431 0
3837 후기
image
추주비 6일 전10:33 326 +1
3836 질문
normal
angrynerd 24.04.17.14:11 499 0
3835 오픈소스
image
달소 24.04.15.23:00 452 0