본문 바로가기

도커와 쿠버네티스

쿠버네티스 1편: 입문자에게 쿠버네티스가 어려운 이유 (+ 쿠버네티스와 도커 차이) 저번주 수요일 글또 멤버 분들과 진행하는 도쿠(도커+쿠버네티스) 스터디에서 드디어 쿠버네티스 진도를 나가게 되었다. 이름은 많이 들어봤지만 항상 막연하기만 했던 쿠버네티스다. 이번 편은 단순 쿠버네티스 설명글과는 다르게, 이렇게 차별화를 해보려고 한다: 입문자가 쿠버네티스를 어렵게 느낄 수밖에 없는 이유 쿠버네티스의 어원과 등장 배경 쿠버네티스에 대해 초보자가 갖기 쉬운 오해 + 헷갈릴 만한 질문 정리 AWS ECS(Elastic Container Service) 대신 굳이 쿠버네티스를 써야 하는 이유 입문자에게 쿠버네티스가 어려운 이유 처음 쿠버네티스를 공부하려고 구글에 검색했을 때 '도대체 이게 뭔 소린가?' 싶었다. 그래서 혹시 몰라서 '쿠버네티스가 어려운 이유'를 구글에 검색해봤는데, 별다른 블로.. 2024. 2. 18. 16:39

 ㆍ 

도커와 쿠버네티스
[6주차] Laravel & PHP 프로젝트 도커화하기 Laravel과 PHP를 프로젝트 주제로 고른 이유 이번이 글또 멤버 분들과 도커&쿠버네티스 스터디(Udemy의 온라인 강의: https://www.udemy.com/course/docker-kubernetes-2022/)를 한 지 벌써 6주차다. 5주차까지는 도커 컨테이너로 웹 애플리케이션을 만들 때 Node.js를 주로 다뤘었다. 왜 Node.js를 썼을까? 물론 가장 대중적이기도 하지만, 도커 상에서 코드와 서버 로직을 모두 포함하고 있어서 다른 패키지를 굳이 설치할 필요가 없었기 때문이다. 그래서 컨테이너 한 개로도 실습을 할 수 있었다. 하지만 현실에서는 한 애플리케이션을 도커화할 때 컨테이너 여러 개로 구성하는 게 대부분이고, 그렇기 때문에 6주차에서도 PHP와 Laravel이라는 프레임워크를.. 2024. 1. 31. 21:16

 ㆍ 

도커와 쿠버네티스
[5주차] Part 2: 유틸리티 컨테이너 다루기 Utility Container 공식 용어는 아니지만, 이 강의자가 붙인 이름이다. 지금까지는 application container로만 작업했다. 그리고 이게 primary selling이고 core idea이다. 도커가 존재하는 가장 큰 이유일 것이다. 유틸리티 컨테이너란 특정 환경만 구축해놓은 컨테이너를 말한다. 유틸리티 컨테이너는 프로젝트 환경 구축을 위해 호스트 머신에 여러 패키지, 모듈을 설치해야 하는 불편함을 덜어준다. 컨테이너 '안'에서 명령을 실행하는 방법: docker exec 어떤 컨테이너를 detached mode로 실행하면, 그 컨테이너의 터미널로 접속할 방법이 컨테이너 중지 -> attached mode로 재실행 말고는 없는 걸로 알고 있다. 하지만 docker exec 명령어를.. 2024. 1. 22. 15:51

 ㆍ 

도커와 쿠버네티스
[5주차] Part 1: Docker Compose로 다중 컨테이너 orchestration하기 Docker Compose를 쓰는 이유 지금까지 여러 컨테이너를 빌드하고 실행하는 실습을 진행해보았다. 근데 이 실습을 할 때마다 터미널에 명령어를 일일이 입력하는 게 은근히 번거롭고 시간이 꽤 걸렸다. 또 이런 명령어를 CLI 에 입력하다 보면 오타나 명령어를 빼먹는 등 실수를 하기도 쉽다. Docker Compose는 이런 문제점을 해결하기 위해 등장했다. 한 걸음 더 나아가서 docker compose는 "Automation of multi-container setups", 즉 다중 컨테이너 설정을 자동화하고 편리하게 관리하기 위해 등장했다고 할 수 있다. docker compose라는 단 하나의 구성 파일(yaml)만 가지고 여러 컨테이너들의 편성(orchestration)을 진행한다. 비유하자면.. 2024. 1. 22. 14:52

 ㆍ 

도커와 쿠버네티스
[3주차] Part 2: 볼륨의 읽기 제한, 볼륨의 관리, docker ignore 본 게시글은 유데미(udemy.com)의 (Maximilian Schwarzmüller) 강의를 수강한 후 내용을 정리한 것입니다. 앞서 설명했던 것처럼 볼륨은 컨테이너의 수명 주기에 상관없이 데이터를 저장하고 유지하는 역할을 한다고 했다. 더불어 컨테이너 내부의 경로와 외부(로컬, host machine) 경로를 연결(mount)한다는 개념도 배웠다. 그럼 볼륨에 저장된 데이터를 수정할 때 이런 의문이 들 수 있다. 1) 컨테이너 안에서 데이터를 수정하면 host machine의 경로 안에 있는 데이터도 수정되는가? 2) 반대로, host machine 안의 데이터를 수정하면 컨테이너 안의 데이터가 수정되는 건가? 결국 host machine의 데이터가 원천(source)이고 지속적으로 유지되어야 하는.. 2024. 1. 9. 10:08

 ㆍ 

도커와 쿠버네티스
[3주차] Part 1: 데이터와 볼륨(volume) 이해하기 본 게시글은 유데미(udemy.com)의 (Maximilian Schwarzmüller) 강의를 수강한 후 내용을 정리한 것입니다. 학습 목표 Docker에서 말하는 데이터란 무엇인가? 볼륨(Volume)이란? arguments, environment variables 이해하기 임시 app 데이터 임시 app 데이터는 소스 코드를 말하는 게 아니다. 임시로 저장할 정보를 의미한다. container가 중지돼서 잃어버려도 상관없는 정보가 해당한다. container layer(read-write)에 저장된다. 즉 image에는 수정이 가해지지 않는다. 당연히 사용자의 로컬 시스템에도 변화가 없다. 영구 app 데이터 container 내에서 생성하지만 container의 실행 여부에는 상관 없이 계속 유지.. 2024. 1. 9. 09:59

 ㆍ 

도커와 쿠버네티스
[2주차] Part 4: 도커 이미지 공유하기(push, pull) 본 게시글은 유데미(udemy.com)의 (Maximilian Schwarzmüller) 강의를 수강한 후 내용을 정리한 것입니다. 컨테이너를 공유하고 싶다면, 이미지를 공유하면 된다 도커의 자명한 전제가 있다. 이미지를 갖고 있다면 누구나 이미지를 기반으로 컨테이너를 생성할 수 있다(Everyone who has an image, can create containers based on the image). 그렇기 때문에 container 자체를 공유하는 게 아니라 image를 공유하는 게 맞다. 방법 1: Dockerfile과 코드를 공유 어차피 dockerfile과 필요한 코드만 있다면 docker build 명령어로 image를 만들 수 있고 container는 image-based이니 Docker.. 2024. 1. 9. 09:50

 ㆍ 

도커와 쿠버네티스
[2주차] Part 3: 도커 이미지와 컨테이너를 관리하기 본 게시글은 유데미(udemy.com)의 (Maximilian Schwarzmüller) 강의를 수강한 후 내용을 정리한 것입니다. docker --help --help 옵션으로 터미널에 치면 도커에서 제공하는 정말 많은 명령어를 확인할 수 있다. 이번 시간에는 이 중 우리가 정말 자주 쓰고 필요한 명령어(core commands)만 살펴보자. docker ps, 도커 컨테이너 목록 확인하기 # --all. 이미 중단되었던 container도 확인할 수 있다 docker ps -a # --last int. 가장 최근에 생성된 마지막 3개 컨테이너만 보여준다 docker ps -3 # 기본 사용법: docker ps -n # --latest. 가장 마지막으로 생성된 컨테이너를 보여준다(모든 상태 포함) d.. 2024. 1. 9. 09:39

 ㆍ 

도커와 쿠버네티스