[42μ„œμšΈ] Docker

tamagoyakiiΒ·2023λ…„ 7μ›” 23일
0

42seoul

λͺ©λ‘ 보기
19/19
post-thumbnail

μ»¨ν…Œμ΄λ„ˆκ°€ 뭔지 μ•Œμ•„λ΄€μœΌλ‹ˆ, 이제 도컀에 λŒ€ν•΄ μ•Œμ•„λ³΄μž!

🐳 Docker

λ„μ»€λŠ” μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ»¨ν…Œμ΄λ„ˆ μœ λ‹›μœΌλ‘œ νŒ¨ν‚€μ§• ν•˜μ—¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹ μ†ν•˜κ²Œ κ΅¬μΆ•ν•˜κ³  ν…ŒμŠ€νŠΈ 및 배포할 수 μžˆλ„λ‘ λ„μ™€μ£ΌλŠ” μ†Œν”„νŠΈμ›¨μ–΄ ν”Œλž«νΌμ΄λ‹€. Docker hubλ‘œλΆ€ν„° μ»¨ν…Œμ΄λ„ˆμ— ν•„μš”ν•œ 이미지듀을 내렀받을 수 있으며, μœ„μ—μ„œ μ–ΈκΈ‰ν–ˆλ“―μ΄ Dockerfile둜 λΉŒλ“œ ν•˜μ—¬ μ‚¬μš©μž μ •μ˜ 이미지λ₯Ό 생성할 μˆ˜λ„ μžˆλ‹€.

λ„μ»€λŠ” 둜컬 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‚¬μš©ν•˜μ—¬ κ°œλ°œμžκ°€ ν‘œμ€€ν™”λœ ν™˜κ²½μ—μ„œ μž‘μ—…ν•  수 μžˆλ„λ‘ ν•˜μ—¬ 개발 수λͺ… μ£ΌκΈ°λ₯Ό κ°„μ†Œν™”ν•œλ‹€. λ•Œλ¬Έμ— CI/CD(Continuous Integration/Continuous Delivery)에 μ’‹λ‹€.

Docker architecture

λ„μ»€λŠ” ν΄λΌμ΄μ–ΈνŠΈ-μ„œλ²„ ꡬ쑰λ₯Ό μ‚¬μš©ν•œλ‹€. 도컀 ν΄λΌμ΄μ–ΈνŠΈκ°€ 도컀 데λͺ¬μ— μš”μ²­μ„ 보내면, 데λͺ¬μ€ μ»¨ν…Œμ΄λ„ˆλ₯Ό λΉŒλ“œν•˜κ³  μ‹€ν–‰μ‹œν‚¨λ‹€. ν΄λΌμ΄μ–ΈνŠΈμ™€ 데λͺ¬μ€ 같은 μ‹œμŠ€ν…œμ—μ„œ 싀행될 μˆ˜λ„ 있고, ν΄λΌμ΄μ–ΈνŠΈλ₯Ό 원격 데λͺ¬μ— μ—°κ²°μ‹œμΌœ μ‚¬μš©ν•  μˆ˜λ„ μžˆλ‹€. λ‘˜μ€ UNIX μ†ŒμΌ“ λ˜λŠ” λ„€νŠΈμ›Œν¬ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해 REST API둜 ν†΅μ‹ ν•œλ‹€.

또 λ‹€λ₯Έ ν΄λΌμ΄μ–ΈνŠΈλ‘œλŠ” Docker Composeκ°€ μžˆλ‹€. Inception κ³Όμ œμ—μ„œ μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” 것 쀑 ν•˜λ‚˜μ΄λ‹€!

Docker daemon

도컀 데λͺ¬(dockerd) λ„μ»€μ˜ API μš”μ²­μ„ 기닀리고 μžˆλ‹€κ°€ 이미지, μ»¨ν…Œμ΄λ„ˆ, λ„€νŠΈμ›Œν¬, λ³Όλ₯¨κ³Ό 같은 도컀 κ°μ²΄λ‚˜ 도컀 μ„œλΉ„μŠ€μ— λŒ€ν•œ 처리λ₯Ό ν•œλ‹€.

Docker client

도컀 ν΄λΌμ΄μ–ΈνŠΈλŠ” μ‚¬μš©μžλ“€μ΄ 도컀λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” μ£Όμš” 방법이닀. docker run λ“±μ˜ λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜λ©΄, ν΄λΌμ΄μ–ΈνŠΈλŠ” 도컀 APIλ₯Ό μ‚¬μš©ν•˜μ—¬ 데λͺ¬μœΌλ‘œ ν•΄λ‹Ή λͺ…λ Ήμ–΄λ₯Ό μ „λ‹¬ν•œλ‹€. 도컀 ν΄λΌμ΄μ–ΈνŠΈλŠ” ν•˜λ‚˜ μ΄μƒμ˜ 데λͺ¬κ³Ό 톡신할 수 μžˆλ‹€.

Docker Desktop

Mac, Windows, Linux ν™˜κ²½ 등에 μ„€μΉ˜ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄λ‹€. 데λͺ¬, ν΄λΌμ΄μ–ΈνŠΈ, 컴포즈, μΏ λ²„λ„€ν‹°μŠ€ 등이 ν¬ν•¨λ˜μ–΄ μžˆλ‹€.

Docker registries

도컀 이미지λ₯Ό μ €μž₯ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” μ„œλ²„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄λ‹€. 도컀 이미지λ₯Ό 둜컬 λ¨Έμ‹ μ΄λ‚˜ ν΄λΌμš°λ“œ ν™˜κ²½μ— μ €μž₯ν•˜κ³  λ‹€μš΄λ‘œλ“œν•˜μ—¬ κ³΅μœ ν•  수 μžˆλ„λ‘ ν•œλ‹€. Docker HubλŠ” 곡개 λ ˆμ§€μŠ€νŠΈλ¦¬λ‘œ, λͺ¨λ‘κ°€ μ‚¬μš©ν•  수 μžˆλ‹€. λ„μ»€μ—μ„œ 별닀λ₯Έ μ„€μ • 없이 이미지λ₯Ό λ‹€μš΄λ‘œλ“œν•˜λ©΄ κΈ°λ³Έκ°’μœΌλ‘œ Docker Hubμ—μ„œ 찾게 λ˜μ–΄μžˆλ‹€.

docker pull λ˜λŠ” docker run λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜λ©΄ μ‚¬μš©μžμ˜ λ ˆμ§€μŠ€νŠΈλ¦¬μ—μ„œ 이미지λ₯Ό 받을 수 있으며, docker push λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜λ©΄ μ‚¬μš©μžμ˜ λ ˆμ§€μŠ€νŠΈλ¦¬μ— 이미지λ₯Ό 올릴 수 μžˆλ‹€.

Docker Compose

μ»΄ν¬μ¦ˆλŠ” μ»¨ν…Œμ΄λ„ˆκ°€ μ—¬λŸ¬ 개인 도컀 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰μ‹œν‚€κΈ° μœ„ν•œ 도ꡬ닀. YAML(YAML Ain't Markup Language) 파일둜 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλΉ„μŠ€λ₯Ό ꡬ성할 수 있으며, ν•΄λ‹Ή νŒŒμΌμ„ μ‹€ν–‰μ‹œν‚΄μœΌλ‘œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬μ„±ν•˜λŠ” μ„œλΉ„μŠ€λ“€μ„ ν•œ λ²ˆμ— μƒμ„±ν•˜κ³  μ‹œμž‘ν•  수 μžˆλ‹€.

도컀 컴포즈의 μž₯점은 λ‹€μŒκ³Ό κ°™λ‹€.

  1. ν•˜λ‚˜μ˜ ν˜ΈμŠ€νŠΈμ— λ…λ¦½λœ ν™˜κ²½μ„ μ—¬λŸ¬ 개 κ°€μ§ˆ 수 μžˆλ‹€.

  2. μ»¨ν…Œμ΄λ„ˆκ°€ 생성될 λ•Œ volume 데이터λ₯Ό 보쑴할 수 μžˆλ‹€. 이게 무슨 말이냐.. docker compose up λͺ…λ Ήμ–΄κ°€ μ‹€ν–‰λ˜λ©΄, μƒˆλ‘œμš΄ μ»¨ν…Œμ΄λ„ˆκ°€ 이전 μ»¨ν…Œμ΄λ„ˆμ—μ„œ μ‚¬μš©λœ λ³Όλ₯¨μ„ μ°Ύμ•„ μ‚¬μš©ν•œλ‹€. λ•Œλ¬Έμ— 데이터 손싀을 κ±±μ •ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.

  3. μ»΄ν¬μ¦ˆλŠ” μ»¨ν…Œμ΄λ„ˆλ₯Ό λ§Œλ“€κΈ° μœ„ν•œ ꡬ성듀을 캐싱 ν•œλ‹€. μ„œλΉ„μŠ€λ₯Ό μž¬μ‹œμž‘ν•˜λ©΄ μˆ˜μ • 사항이 μ—†λŠ” μ»¨ν…Œμ΄λ„ˆλŠ” 기쑴에 있던 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ°Ύμ•„ μž¬μ‚¬μš©ν•˜λ©°, μˆ˜μ •λœ μ»¨ν…Œμ΄λ„ˆλ§Œ λ‹€μ‹œ μƒμ„±ν•˜κ²Œ λœλ‹€.

  4. λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  수 있으며, extend λ“±μ˜ λͺ…λ Ήμ–΄λ‘œ ν™˜κ²½ ꡬ성을 덧뢙이고 μ΄λ™μ‹œν‚¬ 수 μžˆλ‹€.

Docker Network

도컀 μ»¨ν…Œμ΄λ„ˆλŠ” 격리된 ν™˜κ²½μ—μ„œ λŒμ•„κ°€κΈ° λ•Œλ¬Έμ— 기본적으둜 λ‹€λ₯Έ μ»¨ν…Œμ΄λ„ˆμ™€μ˜ 톡신이 λΆˆκ°€λŠ₯ν•˜λ‹€. ν•˜μ§€λ§Œ μ—¬λŸ¬ 개의 μ»¨ν…Œμ΄λ„ˆλ₯Ό ν•˜λ‚˜μ˜ 도터 λ„€νŠΈμ›Œν¬μ— μ—°κ²°μ‹œν‚€λ©΄ μ„œλ‘œ 톡신이 κ°€λŠ₯해진닀.

docker network ls μ»€λ§¨λ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ μ•„λž˜μ™€ 같이 μƒμ„±λ˜μ–΄ μžˆλŠ” λ„€νŠΈμ›Œν¬λ₯Ό 확인할 수 μžˆλ‹€.

src_intraλ₯Ό μ œμ™Έν•œ μœ„μ˜ bridge, host, none은 도컀 데λͺ¬μ΄ μ‹€ν–‰λ˜λ©΄μ„œ μƒμ„±λ˜λŠ” λ„€νŠΈμ›Œν¬λ“€μ΄λ‹€. λ‹€μŒμ€ 기본적인 도컀 λ„€νŠΈμ›Œν¬μ˜ μ’…λ₯˜λ“€μ΄λ‹€.

  1. bridge : ν•˜λ‚˜μ˜ 호슀트 컴퓨터 λ‚΄μ—μ„œ μ—¬λŸ¬ μ»¨ν…Œμ΄λ„ˆλ“€μ΄ μ„œλ‘œ μ†Œν†΅ν•  수 μžˆλ„λ‘ ν•΄μ€€λ‹€.

  2. host : 호슀트 컴퓨터와 λ™μΌν•œ λ„€νŠΈμ›Œν¬μ—μ„œ μ»¨ν…Œμ΄λ„ˆλ₯Ό 돌리기 μœ„ν•΄μ„œ μ‚¬μš©λœλ‹€.

  3. overlay : μ—¬λŸ¬ ν˜ΈμŠ€νŠΈμ— λΆ„μ‚°λ˜μ–΄ λŒμ•„κ°€λŠ” μ»¨ν…Œμ΄λ„ˆλ“€ 간에 λ„€νŠΈμ›Œν‚Ήμ„ μœ„ν•΄μ„œ μ‚¬μš©λœλ‹€.

🌠 참고

https://docs.docker.com/get-started/overview/
https://docs.docker.com/compose/
https://www.daleseo.com/docker-networks/

1개의 λŒ“κΈ€

comment-user-thumbnail
2023λ…„ 7μ›” 23일

잘 μ½μ—ˆμŠ΅λ‹ˆλ‹€. 쒋은 정보 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.

λ‹΅κΈ€ 달기