- 쿠버네티스에 대해 정리하기 앞서 도커의 개념부터 정리해 보도록 하자.
- 도커는 가상화 기술을 기반으로 만들어 졌다. 기존의 가상화는 하이퍼바이저가 논리적으로 분할된 공간에서 VM이라는 독립된 가상환경을 만들고 VM에 깔린 OS를 구동 및 모니터링하는 역할을 한다. 즉, VM은 다른 가상환경에 영향을 미치지 않는다는 장점이 있다.
- 그렇다면 도커와 VM의 차이는 무엇일까? 간단히 말하자면 Guest OS의 유무라고 할 수 있다. 아래 그림을 보면 알 수 듯이 VM에는 Guest OS가 깔린다. 하지만 도커는 컨테이너를 기반으로 작동한다. 이는 곧 자원의 효율성과 직결된다. VM은 새로 생성할 때 마다 OS를 위한 자원을 할당해 주어야 하지만 도커는 app을 위한 패키지만 있으면 컨테이너를 구동시킬 수 있다. 즉, 도커의 컨테이너는 코드 및 종속성(dependency)을 함께 패키징하는 Application 계층의 추상화라고 정의할 수 있다.
- Docker Engine도 결국 하나의 VM이라고 볼 수 있다. Docker의 Guest OS가 바로 Linux Kernel이고 이 위에 쌓이는 컨테이너들에는 OS가 존재하지 않으며 서로 커널에 의해 격리된다.
- 도커는 보통 docker desktop을 설치해서 컨테이너를 관리한다. 설치시 아주 높은 확률로 WSL 관련 에러가 나는데 에러코드를 따라가면 쉽게 해결할 수 있으니 자세한 설명은 생략한다.
- 그렇다면 도커는 어떻게 사용할까? VM을 사용할때와 유사하게 이미지를 가지고 컨테이너를 생성한다. 이미지는 Dockerfile을 작성하여 빌드할 수 도 있고 Docker hub에서 다른사람이 생성한 이미지를 받아서 사용할 수 도 있다.
(참고로 이미지 저장소는 Docker hub, Docker harbor 두 곳이 있는데 각각 public, private라고 생각하면 된다)
- 처음에는 이미지를 가져다 쓰는것 보다는 원하는 환경을 구성하기위한 Dockerfile을 작성하는 것을 추천한다.
아래는 Dockerfile을 작성하는데 쓰이는 기본 구성요소이다.
- Dockerfile을 빌드할 때에는 Dockerfile을 포함하고있는 디렉토리의 모든 서브 디렉토리까지 모두 Docker 데몬으로 보내 처리하니 참고하길 바란다. 예를 들어 로그를 10초마다 발생시키 run.py파일이 있다고 가정하면 아래와 같이 Dockerfile을 작성하면 된다. python3.8 이미지를 기반으로 현재 디렉토리에있는 모든 파일을 app디렉토리로 복사한다. 이후 "RUN", "CMD", "ENTRYPOINT" 등의 명령이 실행될 작업 디렉토리를 app 디렉토리로 설정한다. 8080포트를 연결하고 컨테이너가 시작되었을 때 python으로 run.py를 실행한다. 만약 run.py파일에서 requirement가 있다면 주석과 같이 처리할 수 있다.
- docker-compose.yaml 파일의 구성요소는 docs를 참고하는 것이 더 효율적이라고 생각하여 링크에서 확인 바란다.
- 쿠버네티스는 컨테이너화된 어플리케이션의 배포, 스케일링 등을 제공하는 관리시스템이다. 컨테이너 도구들 중 도커가 가장 일반적으로 쓰이기 때문에 도커에 대해서 반드시 짚고 넘어가야 쿠버네티스를 잘 활용할 수 있다.
ref)
https://velog.io/@kdaeyeop/%EB%8F%84%EC%BB%A4-Docker-%EC%99%80-VM%EC%9D%98-%EC%B0%A8%EC%9D%B4
'Docker' 카테고리의 다른 글
Docker 명령어 정리 (0) | 2023.02.01 |
---|---|
Docker 세팅 (0) | 2022.07.06 |