일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Classification
- GPT-4
- 딥러닝
- PCA
- ChatGPT
- supervised learning
- 티스토리챌린지
- OpenAI
- 머신러닝
- 오블완
- 지도학습
- 해커톤
- LG Aimers 4th
- Machine Learning
- deep learning
- LG Aimers
- 분류
- gpt
- LLM
- AI
- LG
- 회귀
- regression
Archives
- Today
- Total
SYDev
[Docker & Kubernetes] 1주차 정리 본문
Chapter 1. 실습 환경 구축하기
1.1. 우분투 이미지 다운로드
apple silicon에서 ubuntu server 다운
1.2. 버추얼박스 설치
virtualbox 공홈의 downloads 페이지에서는 애플 m시리즈에 호환되는 버전을 찾지 못함
https://download.virtualbox.org/virtualbox/7.0.8/VirtualBox-7.0.8_BETA4-156879-macOSArm64.dmg
->해당 링크로 다운 가능
https://www.virtualbox.org/ticket/21771
1.3. 가상머신 생성
1.4. 가상머신에 우분투 설치
MAC 이슈로 여기서부터 막힘..
(parallels 이용해서 실행하는 방법 -> 유료 구독 서비스..)
Chapter 2. 도커의 개념
2.1. 사전 기초 지식
2.1.1. 운영체제
하드웨어
- 좁은 의미의 컴퓨터 = CPU + RAM
- 입/출력 장치, 보조 기억 장치는 부가적인 장치
소프트웨어
- software: 하드웨어에서 작동되는 프로그램
- operating system: 하드웨어, 소프트웨어 자원을 관리, 이를 위해 스케줄링 기능을 제공, 프로그램이 실행될 수 있는 환경을 제공하는 역할을 하는 시스템 소프트웨어
- OS와 application 사이에는 shell이 존재 -> shell: os와 사용자 사이에서 다리 역할을 하는 프로그램(bash, zsh, …)
2.1.2. 프로그램, 프로세스, 스레드
프로그램
- program: 실행 가능한 instruction의 집합
- 하드 디스크 같은 저장 장치에 저장되어 있지만, 메모리에는 올라가지 않은 정적인 상태
프로세스
- process: 실행 중인 program을 의미(memory에서의 program)
- multi process: 디스크에 존재하는 프로그램을 여러 번 실행 -> 여러 개의 프로세스 작동
스레드
- thread: process가 할당받은 자원을 이용하는 실행 단위, process 내에 실행되는 여러 흐름의 단위
- process는 최소 한 개 이상의 thread를 가짐 -> main thread
- process -> thread의 container
- ex) word program -> 하나의 process -> thread 1(화면 상에 글자를 보여줌), thread 2(사용자의 키 입력에 대응), thread 3(백그라운드에서 오탈자와 문법을 확인)
2.1.3. 네임스페이스
- namespace: 프로세스를 실행할 때, system resource를 분리해서 실행할 수 있도록 도와주는 기능
- ex) 주민등록번호를 이용해 개인을 구분
- 프로세스를 격리시켜 충돌을 방지
- 다음은 리눅스 네임스페이스
PID: Process ID | 리눅스 커널의 Process ID를 분리 |
NET: Networking | 네트워크 인터페이스(NET)를 관리 |
IPC: Inter Process Communication | 프로세스 간 통신(IPC) 접근을 관리 |
MNT: Mount | 파일 시스템의 마운트를 관리 |
UTS: Unix Timesharing System | 커널과 버전 식별자를 관리 |
2.2. 도커 기초 지식
2.2.1. 도커의 정의
회사로서의 Docker
- 2008년 솔로몬 하익스가 프랑스 파리에서 DotCloud라는 이름으로 설립
- 2013년 9월 19일에 PaaS(Platform-as-a-Service) 형태로 출시
소프트웨어로서의 Docker
- Container라고 부르는 OS 수준의 가상화 방식으로 소프트웨어를 배포하는 방식을 사용하는 PaaS 제품
- PaaS: application, data 단계만 관리하는 서비스를 의미 -> application, data를 제외한 runtime, middleware, os, 가상화, server, storage, networking은 업체가 관리
- 다양한 개발 환경에서 container를 이용해 software를 편리하게 배포 가능해짐
- open source -> 누구나 사용 가능
- 운영체제 위에 docker 설치
- 도커는 컨테이너 단위로 application 실행 -> container들은 서로 격리되어 독립성을 보장
- 각 container들은 application을 실행하는 데 필요한 최소한의 바이너리/라이브러리를 포함
2.2.2. 컨테이너
- software 개발에서의 container: software를 배포할 때 필요한 코드, 라이브러리, 환경 설정 파일들을 한데 모아 격리 -> 실행가능한 패키지로 만든 것
- 서로 다른 container는 격리된 환경에서 작동 -> 서로 충돌 X
- software sytem을 구축할 때 최소 구성 요소로 분할하여 구축하는 방식인 Microservice Architecture의 기반
- 격리된 서로 다른 컨테이너끼리는 통신 가능 -> 컨테이너가 동일한 os 위에서 작동하기 때문 -> 가상머신에 비해 resource 소모량이 적으므로 더 효율적인 resource 관리 가능
2.2.3. 가상화
- virtualization: 컴퓨터에서 활용하는 resource를 추상화하는 개념
- 여러 개의 가상머신를 생성 -> 단일 컴퓨팅 자원을 여러 개의 논리적 자원으로 나누어 동작 가능
- hypervisor: 단일 물리 머신에서 다수의 가상머신을 실행할 때 활용하는 software - 버추얼박스, VMware, …
호스트 가상화
- 호스트 운영체제 위에 하이퍼바이저를 통해 가상머신을 만들고, 각 가상머신 내부에 게스트 운영체제를 설치하는 방식
하이퍼바이저 가상화
- 호스트 운영체제 필요 X -> 부팅 시 가상머신 선택
- 성능이 우수하다는 장점, but 초기 설정이 복잡하고 관리가 어려울 수 있음
컨테이너 가상화
- 운영체제 위에 docker를 설치 -> 다수의 컨테이너를 통해 application을 실행
- docker, kubernetes는 모두 컨테이너 가상화 방식을 활용
2.2.4. 도커 구성 요소
docker-cli(Docker Client)
- 명령어 행으로 dockerd API를 활용 -> build, pull, run과 같은 명령을 내림
- docker daemon과 통신 -> 우분투에서 실행하는 터미널이라 생각
dockerd(Docker Daemon)
- 백그라운드에서 실행되는 Daemon Process에 해당
- 도커 API 요청을 수신하고 도커 이미지, 컨테이너 등과 같은 도커와 관련된 객체를 관리
containerd
- 컨테이너 실행과 관리에 필요한 기능을 수행하는 오픈소스 컨테이너 런타임, 컨테이너의 생명주기(도커 이미지 전송, 컨테이너 실행, 스토리지, 네트워크 등 포함)를 모두 관리
- 컨테이너 실행만 담당하는 runc와는 다른 역할
- high-level container runtime
runc
- 컨테이너 실행과 관련된 작업을 수행하는 low-level container runtime
- containerd는 실행 이외에도 다양한 역할을 하는 반면 -> runc는 컨테이너 실행만 담당
containerd-shim
- containerd와 runc 사이에서 작동하는 중간 프로세스에 해당 -> 컨테이너 실행을 조정하는 역할
- containerd는 runc와 통신함으로써 컨테이너를 실행 -> 이때 containerd-shim이 둘 사이에서 중개자 역할 수행
Chapter 3. 도커 설치
docker가 이미 설치되어 있으므로, 명령어만 테스트해봄
apple silicon에서는 colima를 이용해야 terminal에서 실행 가능하다고 한다.
colima start --memory 4 --arch x86_64
참고자료
- "한 권으로 배우는 도커 & 쿠버네티스", 장철원, 한빛미디어, 2024.04.29
- https://velog.io/@limchard/Docker-terminal%EB%A1%9C-%EC%8B%A4%ED%96%89%ED%95%B4%EB%B3%B4%EA%B8%B0-mysql-%EC%97%B0%EB%8F%99%EA%B9%8C%EC%A7%80
'KHUDA 6th > Study' 카테고리의 다른 글
[핸즈온 AWS] 1주차 실습 (0) | 2024.07.31 |
---|---|
[핸즈온 AWS] Chapter 3. AWS 네트워킹 서비스 (0) | 2024.07.31 |
[Docker & Kubernetes] 2주차 정리 (0) | 2024.07.30 |
[핸즈온 AWS] Chapter 2. AWS 컴퓨팅 서비스 (0) | 2024.07.29 |
[핸즈온 AWS] Chapter 1. AWS (1) | 2024.07.24 |