서문
구글 클라우드 셸을 이용한 GDSC 동아리 학습한 내용이다.
발급되는 임시 ID를 통한 온라인 셸 학습은 처음 경험해보는거라 색다르게 느껴졌다.
사전 정의
- 쿠버네티스와 도커를 배우는데 그에 대한 기본용어 정의는 제대로 나와있지 않아서 헷갈렸다. 그래서 우선 용어부터 정리하였다.
기본 용어정리
컨테이너 | 애플리케이션을 어디서나 실행할수 있도록 만든 가벼운 가상화 환경, 가상머신보다 빠르고 가볍다. |
---|---|
도커 | 컨테이너를 다루는 도구 |
쿠버네티스 | 여러개의 컨테이너를 배포, 관리, 모니터링 하는 운영도구, 오케스트레이션 역할 |
노드 | 컨테이너가 실제로 실행되는 물리, 가상 서버 |
클러스터 | 여러개의 노드가 하나로 묶여 있는 그룹, 분산하여 실행 가능 |
파드 | 가장 작은 배포 단위, 1개 이상의 컨테이너 |
Docker
- 컨테이너 실행
docker run {imagename}
- docker는 run 할때 따로 이미지가 있지 않으면 demon이 Docker Hub의 공개 레지스트리에서 가져오고, 가져온 이미지에서 컨테이너를 생성하여 실행한다. images 명령어로 현재 가진 이미지들을 확인할 수 있다.
doctor ps를 통해 현재 실행중인 컨테이너 목록을 확인할 수 있다. -a를 붙여 실행 완료된 컨테이너까지 포함하여 찾거나, Names 를 지정하여 찾을 수 있다.
dockerFile 구성요소
FROM node:{이미지의 상위 이미지 지정} lts 가 기본
WORKDIR {작업 디렉터리}
ADD {현재 디렉터리 컨텐츠 추가 위치. 온점으로 표시}
EXPOSE {portNumber}
변경 후 새롭게 빌드
docker build -t node-app:0.1 .
빌드한 이미지로 컨테이너 실행. dockerFile이 있는 디렉터리에서 빌드 할수 있고 -t 뒤에는 {name:tag} 가 와서 지정해줄 수 있음. tag는 버젼같은 거라고 이해하면 될듯
docker run -p 4000:80 --name my-app node-app:0.1
다음 예시에서는 컨테이너의 포트 80에 호스트의 포트 4000을 매핑하고, 실행할때 컨테이너 이름을 my-app으로 지정해준 상태에서 node-app:0.1을 실행해 준것. 여기에 -d까지 붙인다면 터미널 꺼도 백그라운드에서 작동함.
docker run -p 4000:80 --name my-app -d node-app:0.1
docker ps
exec로 컨테이너 접근해 그 컨테이너에 대한 bash창 열기 가능. -it로 stdin을 열린 상태로 유지시켜 상호작용할 수 있게함
docker exec -it [container_id] bash
저장소 만들어 저장소에서 이미지를 푸시해 실행하는 것 가능
노드 kubernetes
container registry에 push하고 여러개를 묶어 cluster로 create 해줄 수 있다.deployment 객체로 배포하고 생성된 pods 가져올 수 있다.
포드의 복제본 만들고 나열, 서비스 확장
kubectl scale deployment hello-node --replicas=4
kubectl get pods
배포와 생성된 포드 보기
kubectl get deployments
kubectl get pods
expose 명령어와 로드밸런서를 지정해주어서 외부 인터넷에 노출 할 수 있다.
kubectl expose deployment hello-node --type="LoadBalancer" --port=8080
결론
난이도 설정을 잘못해서 처음에 어려운 강의를 들었다. 무슨 말인지 하나도 모르겠어서 기초 강의를 다시 듣고 정리한 내용이다. 대충은 무슨말인지 알겠는데 아직 왜 이렇게 해야하는지 감은 안잡힌다. 직접 해보면서 더 배워 나가야 할 것 같다.
'CS 내용 요약, 지식' 카테고리의 다른 글
데이터 통신 기초 - 3. 물리 계층 (0) | 2024.04.06 |
---|---|
데이터 통신 기초 - 2. 네트워크 모델 (0) | 2024.03.31 |
데이터 통신 기초 - 1. Overview (0) | 2024.03.31 |
내가 보려고 적는 DART의 비동기 프로그래밍 (1) | 2024.01.14 |
Easy to make Mistakes in Flutter (1) | 2024.01.10 |