πŸ“Œ 곡뢀 계기

좔가적인 도컀 곡뢀λ₯Ό μœ„ν•΄ 유튜브 따배도 도컀 μ‹œλ¦¬μ¦ˆλ₯Ό λ³΄λ©΄μ„œ 정리해 λ΄…λ‹ˆλ‹€. 

λͺ©μ°¨

 

πŸ“1. μ»¨ν…Œμ΄λ„ˆλ₯Ό λ°°μš°λŠ” 이유?

⏳ μ‹œλŒ€μ˜ λ³€ν™”!

μ‹œλŒ€λŠ” λ² μ–΄λ©”νƒˆ 방식 > 가상화 방식 > 가상화 방식 쀑 μ»¨ν…Œμ΄λ„ˆ 방식 λ“±μž₯ 순으둜 λ°”λ€Œμ—ˆλ‹€. 

 

  • Bare Metal : ν•˜λ“œμ›¨μ–΄μ˜ λ¦¬μ†ŒμŠ€λ₯Ό κ³΅μœ ν•˜λŠ” 가상화 λ°©μ‹κ³ΌλŠ” λ‹€λ₯΄κ²Œ ν•˜λ“œμ›¨μ–΄μ˜ λͺ¨λ“  μ„±λŠ₯을 μ‚¬μš©ν•  수 μžˆλŠ” 방식
  • Virtualization : λ² μ–΄ λ©”νƒˆ μ‹œμŠ€ν…œ μœ„μ— HypervisorλΌλŠ” μ†Œν”„νŠΈμ›¨μ–΄ 적 κΈ°μˆ μ„ 가지고 가상 컴퓨터(가상머신)λ₯Ό λ§Œλ“€μ–΄ ν•˜λ‚˜μ˜ ν•˜λ“œμ›¨μ–΄λ₯Ό λ‚˜λˆ  μ“Έ 수 있게 ν•˜λŠ” 방식

ν•˜μ§€λ§Œ ν˜„μž¬λŠ” μ‚¬μš©ν•˜λŠ” 정도에 따라 ν™•μž₯ν•˜λŠ” μΆ•μ†Œν•  수 μžˆλŠ” μš”κ΅¬μ™€ μ„œλΉ„μŠ€ 쀑단없이 μš΄μ˜ν•΄μ•Όν•˜λŠ” ν™˜κ²½μ—μ„œ 이런 μ‹œμŠ€ν…œμ€ ν•œκ³„κ°€ μžˆμ—ˆλ‹€. κ·Έλž˜μ„œ λ“±μž₯ν•œ 것이 λ² μ–΄ λ©”νƒˆ μ‹œμŠ€ν…œμœ„μ— OSλ₯Ό 올리고 μ»¨ν…Œμ΄λ„ˆ 엔진을 올린 μ‹œμŠ€ν…œμ΄μ—ˆλ‹€.

그리고 도컀가 이 μ»¨ν…Œμ΄λ„ˆ 기술 쀑 ν•˜λ‚˜μ΄λ‹€.

λ„μ»€λŠ” 

  • μ‹€μ œ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό μ΅œμ†Œν™”λœ ν™˜κ²½λ§Œ λ“€μ–΄κ°€κΈ° λ•Œλ¬Έμ— μš©λŸ‰μ΄ ν™•μ—°ν•˜κ²Œ 적닀⬇️
  • μ»¨ν…Œμ΄λ„ˆ λ§ˆλ‹€ isolation(고립)λ˜μ–΄μžˆμ–΄ ν™•μž₯성이 μ’‹λ‹€ 

 

 

❓ μ™œ ꡳ이 λ¦¬λˆ…μŠ€μ—μ„œ λŒλ €μš”? 

λ¦¬λˆ…μŠ€ 컀널 κΈ°λŠ₯을 써야 ν•˜λ‹ˆκΉŒ!

 

λ¦¬λˆ…μŠ€λŠ” 컀널 κΈ°λŠ₯ 기반으둜 λ§Œλ“€μ–΄μ§„ λ„μ»€λŠ” 

λ…λ¦½λœ 곡간 ν˜•μ„± chroot κΈ°λŠ₯에 κ·Έ 곡간 μ•ˆμ— 6가지 isolate κΈ°λŠ₯인 namespaceλ₯Ό 지원해 μ™„μ „νžˆ 뢄리될 수 있게 λ•λŠ”λ‹€. 그리고 λΆ„λ¦¬λœ 곳에 ν•„μš”ν•œ 만큼의 HW(ν•˜λ“œμ›¨μ–΄)μ§€μ›ν•˜λŠ” cgroup  λ“± λ¦¬λˆ…μŠ€ 컀널 κΈ°λŠ₯을 μ‚¬μš©ν•˜μ—¬ μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•˜κΈ° λ•Œλ¬Έμ— ν•„νžˆ λ¦¬λˆ…μŠ€λ‘œ λŒλ €μ•Ό ν•œλ‹€. 

 

그럼 μœˆλ„μš°λ‚˜ Macμ€μš”???

λ¦¬λˆ…μŠ€ κ²½μš°λŠ” Hypervisor ν•„μš”μ—†μ΄ μ»¨ν…Œμ΄λ„ˆκ°€ μ˜¬λΌκ°€μ§€λ§Œ λ¦¬λˆ…μŠ€ κΈ°λŠ₯이 μ—†λŠ” μœˆλ„μš°λ‚˜ Mac 경우 Hypervisorλ₯Ό ν™œμ„±ν™” μ‹œμΌœ κ·Έ μœ„μ— μ»¨ν…Œμ΄λ„ˆλ₯Ό λŒλ¦°λ‹€.

 

 

πŸ’₯ 일반 ν”„λ‘œκ·Έλž¨κ³Ό μ»¨ν…Œμ΄λ„ˆ 차이

ν•˜λŠ”μΌμ€ κ°™λ‹€. ꡬ쑰가 λ‹€λ₯Ό 뿐!

λ‘˜λ‹€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 언어에 λŒ€ν•œ ν™˜κ²½μš”μ†Œλ₯Ό μ„€μΉ˜ν•˜κ³  μ•± μ†ŒμŠ€μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜μ—¬ λŒλ¦¬λŠ” 것은 κ°™λ‹€.

λ‹€λ§Œ, μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 운영 ν™˜κ²½μ— λ°”λ‘œ μ“°λŠ”μ§€ (일반 방식)

μ•„λ‹ˆλ©΄ 운영 ν™˜κ²½ μœ„μ— μ»¨ν…Œμ΄λ„ˆ κΈ°λ°˜μ„ 놓고 κ·Έ μ•ˆμ— μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μš΄μ˜ν•˜λŠ” 지가 λ‹€λ₯Έ 것 (μ»¨ν…Œμ΄λ„ˆ 방식)

 

 

😑 κΈ°λŠ₯이 κ°™μœΌλ©΄ λ„λŒ€μ²΄ μ™œ μ“°λŠ” 건데?!? 

  • κ°œλ°œμžκ°€ λ§Œλ“  κ·ΈλŒ€λ‘œ μ–΄λ””μ„œλ“  λŒμ•„κ°„λ‹€.
  • ν™•μž₯ / μΆ•μ†Œκ°€ 용이 (Scale out, Scale In)
  • MSA(MicroService Architecture), DevOps에 적합

κ°œλ°œν™˜κ²½κ³Ό μš΄μ˜ν™˜κ²½μ΄ 달라 κ°œλ°œν•œ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μš΄μ˜ν™˜κ²½μ—μ„œ 잘 μ•ˆλŒμ•„κ°€λŠ” κ²½μš°κ°€ λ§Žμ•˜λ‹€.

ν•˜μ§€λ§Œ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‚¬μš©ν•˜λ©΄ ν•˜λ“œμ›¨μ–΄ 운영 ꡬ쑰, 베이슀 ν”Œλž«νΌ 등이 달라도 μ»¨ν…Œμ΄λ„ˆμ— μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ ν•©ν•œ ν™˜κ²½μ„ 미리 집어 λ„£μ–΄ 놓은 μƒνƒœμ΄κΈ° λ•Œλ¬Έμ— κ°œλ°œν™˜κ²½κ³Ό λ™μΌν•˜κ²Œ λŒμ•„κ°„λ‹€.

 

κ³Όκ±°μ—” Scale outμ‹œ μ„œλ²„λ₯Ό 늘리며 OS도 ν•¨κ»˜ ν™•μž₯λ˜λŠ” 식이 μ—ˆλ‹€λ©΄

μ»¨ν…Œμ΄λ„ˆλŠ” 같은 OS μœ„μ— λ‹€λ₯Έ μ»¨ν…Œμ΄λ„ˆ ν•˜λ‚˜λ₯Ό 더 μ„Έμš°λŠ” λ°©μ‹μœΌλ‘œ ν•˜μ—¬ 훨씬 효율적으둜 ν™•μž₯이 κ°€λŠ₯ν•˜λ‹€.

 

μ‹œμŠ€ν…œμ„ κΈ°λŠ₯λ§ˆλ‹€ μž‘κ²Œ μͺΌκ°œμ„œ μ„œλΉ„μŠ€λ₯Ό λ§Œλ“  ꡬ쑰 MSA

κ°œλ°œλΆ€ν„° μ„œλΉ„μŠ€μš΄μ˜κΉŒμ§€ μžλ™ν™”μ‹œμΌœμ£ΌλŠ” DevOps ν™˜κ²½ 

λ‘˜ λͺ¨λ‘ μ»¨ν…Œμ΄λ„ˆκ°€ μ ν•©ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

 


πŸ“2. μ„€μΉ˜ν•˜λ €λ©΄ 뭐가 ν•„μš”ν•΄?

  • Virtual Boxλ₯Ό μ΄μš©ν•΄ μš°λΆ„νˆ¬ μ„œλ²„, CentOS μ„œλ²„μ— 도컀 ν™˜κ²½ μ„€μΉ˜
    - 가상 μ„œλ²„ λ§Œλ“€κΈ°λŠ” λ”°λ‘œ μ •λ¦¬ν•˜μ§€ μ•Šκ³  μ˜μƒλ³΄κ³  따라 진행
  • windows에 Docker Desktop μ‚¬μš©ν•˜κΈ°
 

Docker] μ„€μΉ˜

πŸ“Œ 도컀 λ‹€μš΄λ‘œλ“œ Docker: Accelerated, Containerized Application Development Docker is a platform designed to help developers build, share, and run modern applications. We handle the tedious setup, so you can focus on the code. www.docker.com μžμ‹ 

littlezero48.tistory.com

λ¦¬λˆ…μŠ€ κΆŒν•œ κ΄€λ ¨

더보기

λ¦¬λˆ…μŠ€ 계정 κΆŒν•œ μ£ΌκΈ°: 

rootκ³„μ •μœΌλ‘œ λ‘œκ·ΈμΈν•΄μ„œ usermod λͺ…λ Ήμ–΄λ‘œ (user modify) G μ˜΅μ…˜μœΌλ‘œ dockerλΌλŠ” 그룹에 ν•΄λ‹Ή 계정을 μΆ”κ°€ν•΄μ€€λ‹€

usermod -a -G docker 계정이름

πŸ“3. μ»¨ν…Œμ΄λ„ˆ 속속듀이 μ•Œμ•„λ³΄μž

μ»¨ν…Œμ΄λ„ˆμ™€ μ»¨ν…Œμ΄λ„ˆ μ΄λ―Έμ§€μ˜ ꡬ쑰λ₯Ό μ•Œμ•„λ³΄κ³  λ™μž‘ 방식을 μ΄ν•΄ν•΄λ³΄μž.

 

🧱 ꡬ쑰

  • μ»¨ν…Œμ΄λ„ˆλŠ” 1개 = Application ν”„λ‘œμ„ΈμŠ€ 1개
  • μ»¨ν…Œμ΄λ„ˆ λΌλ¦¬λŠ” ν•˜λ“œμ›¨μ–΄ λ¦¬μ†ŒμŠ€κ°€ μ™„μ „ 독립 (cpu, memory, network, disk, user 등이 λͺ¨λ‘ 독립적)

μ»¨ν…Œμ΄λ„ˆλŠ” 도컀 데λͺ¬(dockerd) μœ„μ— μž‘λ™ν•˜λ©° 도컀 데λͺ¬μ΄ μ‹€ν–‰λ˜κ³  μžˆλŠ” λ¦¬λˆ…μŠ€ 컀널이 μžˆλŠ” μ‹œμŠ€ν…œμ„ 도컀 호슀트라고 ν•œλ‹€. 도컀 호슀트 μž…μž₯μ—μ„œ μ»¨ν…Œμ΄λ„ˆλŠ” κ·Έλƒ₯ ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€μΌ 뿐이닀. 

 

μ—¬λŸ¬κ°œμ˜ λ ˆμ΄μ–΄κ°€ λͺ¨μ—¬μ Έ ν•˜λ‚˜μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ μ‹œν‚¬ 수 μžˆλ„λ‘ ν•˜λŠ” μ΄λ―Έμ§€λ“€μ˜ λͺ¨μŒμ΄ μ»¨ν…Œμ΄λ„ˆ 이미지이닀. 

이 μ»¨ν…Œμ΄λ„ˆ 이미지가 λ©”λͺ¨λ¦¬μ— μ˜¬λΌκ°€ ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€λ‘œ λ™μž‘ν•˜κ²Œ 되면 μ»¨ν…Œμ΄λ„ˆκ°€ λœλ‹€. 

 

🦿 μ»¨ν…Œμ΄λ„ˆ λ™μž‘λ°©μ‹

  • $ docker search nginx > dockerdμ—κ²Œ μš”μ²­ > Dockerhubμ—μ„œ 검색 > 이미지 검색 성곡
  • $ docker pull nginx:latest > Dockerhub둜 λΆ€ν„° nginx μ»¨ν…Œμ΄λ„ˆ 이미지λ₯Ό κ°€μ Έμ˜΄(μ΄λ―Έμ§€λŠ” ν•˜λ‚˜λ”λΌλ„ κ·Έ μ•ˆμ˜ λ ˆμ΄μ–΄λŠ” μ΄λ―Έμ§€λ§ˆλ‹€ μˆ«μžλ„ ꡬ성도 닀름)
  • $ docker run -d --name web -p 80:80 nginx:latest > ν•΄λ‹Ή μ»¨ν…Œμ΄λ„ˆ 이미지λ₯Ό 가지고 μ»¨ν…Œμ΄λ„ˆλ₯Ό 생성해 dockerd μœ„μ— μ˜¬λΌκ°€ μž‘λ™ν•˜κ²Œ 됨

 

🚩 잠깐 μš©μ–΄ 정리

Docker Host : Docker Daemon이 λ™μž‘ν•˜κ³  μžˆλŠ” μ‹œμŠ€ν…œ

Docker Daemon (dockerd) : μš°λ¦¬κ°€ μ„€μΉ˜ν•œ 도컀

Docker Client Command : docker daemon을 μ œμ–΄ν•˜λŠ” λͺ…λ Ήμ–΄

Docker Hub : 도컀 이미지 μ €μž₯μ†Œ

Container Images : ν•˜λ‚˜μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰μ‹œν‚€κΈ° μœ„ν•΄ λͺ¨λ“  파일과 섀정값을 μ§€λ‹Œ 파일

Container : μ»¨ν…Œμ΄λ„ˆ 이미지가 μ‹€μ œλ‘œ λ™μž‘ν•˜κ²Œ λ˜μ–΄ ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ 되면 μ»¨ν…Œμ΄λ„ˆ

 

+ ꡬ쑰 : https://littlezero48.tistory.com/273


πŸ€– μ‹€μŠ΅

1️⃣ Docker Hubμ—μ„œ μ»¨ν…Œμ΄λ„ˆ 이미지 검색

1. 일단 도컀가 μ •μƒμ μœΌλ‘œ μ‹€ν–‰ 쀑인지 확인

systemctl status docker

 

2. 이미지 검색

docker search 이미지λͺ…

nginxκ°€ ν¬ν•¨λœ 이미지듀이 검색

μš°λ¦¬λŠ” κ·Έ 쀑 ν•˜λŠ˜μƒ‰ 라인 이미지λ₯Ό μ‚¬μš©ν•  것

 


2️⃣ μ»¨ν…Œμ΄λ„ˆ 이미지 λ‹€μš΄λ‘œλ“œ ν›„ image layer 보기

1. 이미지 λ ˆμ΄μ–΄λ₯Ό 보렀면 root κ³„μ •μœΌλ‘œ 듀어가야함 

su -

 

2. root κ³„μ •μ—μ„œ 라이브러리 > 도컀 μœ„μΉ˜λ‘œ κ°€ listλ₯Ό 보면 μ•„λž˜μ™€ 같은 디렉토리 리슀트λ₯Ό λ³Ό 수 μžˆλŠ”λ° μ—¬κΈ°μ„œ overlay2κ°€ λ°”λ‘œ μ»¨ν…Œμ΄λ„ˆ 이미지 λ ˆμ΄μ–΄κ°€ λ“€μ–΄κ°„λ‹€.

아직은 이미지가 μ—†μ–΄μ„œ l ν•˜λ‚˜λ§Œ 있음

 

3. 이미지 λ‹€μš΄ λ°›κΈ°

docker pull 이미지λͺ…

 

4. 이미지 λ‹€μš΄ μ „ λ ˆμ΄μ–΄ κ°œμˆ˜μ™€ ν›„λ₯Ό 비ꡐ해 보면 λ‹€μš΄ 받은 만큼 λŠ˜μ–΄λ‚œ κ±Έ λ³Ό 수 μžˆλ‹€.

뒀에 κ·€μ—½κ²Œ μžˆλŠ” l γ…‹γ…‹γ…‹

 


3️⃣ μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ν•˜κ³  확인해보기 

1. μ»¨ν…Œμ΄λ„ˆ 생성 및 μ‹€ν–‰

$ docker run --name web -d -p  80:80 nginx
  μ»¨ν…Œμ΄λ„ˆ
생성 및 μ‹€ν–‰
μ»¨ν…Œμ΄λ„ˆ
이름 μ˜΅μ…˜
μž„μ˜ 이름 λ°±κ·ΈλΌμš΄λ“œ
(데λͺ¬ λͺ¨λ“œ)
ν¬νŠΈν¬μ›Œλ”© 호슀트:μ»¨ν…Œμ΄λ„ˆ 이미지λͺ…

μ•„λž˜ λžœλ€λ¬Έμžμ—΄μ€ μ»¨ν…Œμ΄λ„ˆ ID

2. μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ 확인

docker ps

 

3. λ¦¬λˆ…μŠ€μ—μ„œ νŽ˜μ΄μ§€λ₯Ό ν™•μΈν•΄λ³΄μž

gui둜 μ΅μˆ™ν•œ κ·Έ λͺ¨μŠ΅μ€ μ•„λ‹ˆμ§€λ§Œ nginx ν™˜μ˜νŽ˜μ΄μ§€ λ“±μž₯!

 

4. μ‚­μ œν•΄λ³΄κΈ°

 

- μ»¨ν…Œμ΄λ„ˆ μ‚­μ œ

μ‹€ν–‰λ˜κ³  μžˆλŠ” μ»¨ν…Œμ΄λ„ˆλŠ” μ‚­μ œν•  수 μ—†μŒ λ¨Όμ € 쀑지

# μ»¨ν…Œμ΄λ„ˆ 쀑지
docker stop μ»¨ν…Œμ΄λ„ˆμ΄λ¦„|μ»¨ν…Œμ΄λ„ˆID

# μ»¨ν…Œμ΄λ„ˆ μ‚­μ œ
docker rm μ»¨ν…Œμ΄λ„ˆμ΄λ¦„|μ»¨ν…Œμ΄λ„ˆID

 

- 이미지 μ‚­μ œ

root κ³„μ •μ—μ„œ λ‹€μ‹œ overlay2 디렉토리λ₯Ό 보면 사라진 것 확인

 

 


βž• κ³΅λΆ€μžλ£Œ 

0 ~ 3-2 κΉŒμ§€

 

[따배도] 도컀 μ‹œλ¦¬μ¦ˆ

 

www.youtube.com

 

+ Recent posts