• toc {:toc}

Docker

  • What is Docker?

  • μœˆλ„μš°λ˜, λ§₯이던 μ‰½κ²Œ μ„€μΉ˜λ˜κ³  μ‚­μ œλ  수 μžˆλ„λ‘ λ§Œλ“ λ‹€.

  • DevOps : 개발과 운영의 과정을 μ‚¬λžŒμ΄ κ°œμž…ν•˜μ§€ μ•Šκ³  μžλ™ν™”λ˜μ–΄ μ²˜λ¦¬ν•˜λŠ” 과정을 λ§ν•œλ‹€. μ½”λ“œλ₯Ό μž‘μ„±ν•˜κ³  생산을 ν•˜λŠ” λ”œλ ˆμ΄λ₯Ό 쀄인닀.

  • λ‚΄κ°€ μ›ν•˜λŠ” Infrastructureλ₯Ό Application듀을 κ΄€λ¦¬ν•˜λŠ” 것과 λ§ˆμ°¬κ°€μ§€λ‘œ 관리할 수 μžˆλ‹€. 즉, Infrastructureλ₯Ό μ½”λ”©ν•  수 μžˆλ‹€. Infrastructure as Code (IaS)

  • ν•„μš”λ‘œ ν•˜λŠ” 것을 dockerfile에 λ‹΄μ•„μ„œ λΉŒλ“œ, docker imageκ°€ λ§Œλ“€μ–΄μ§„λ‹€. docker imageλ₯Ό κ°€μ§€κ³  κ°€μ„œ ν•„μš”ν•œ 컴퓨터에 κ°€μ Έκ°€ μ‹€ν–‰ β‡’ μ»¨ν…Œμ΄λ„ˆ ν˜•νƒœλ‘œ 싀행됨.

    • Dockerfile을 μ‚¬μš©ν•΄ 독립적인 immutable infrastructure ν™˜κ²½μ„ μ„€μ •ν•œλ‹€.
  • Why use Docker?

  1. Flexible - μ–΄λ–€ μ’…λ₯˜μ˜ λ³΅μž‘ν•œ application이든 μ»¨ν…Œμ΄λ„ˆν™” ν•  수 μžˆλ‹€.
  2. Lightweight - μ•ŒνŒŒμΈ λ¦¬λˆ…μŠ€ μ‚¬μš© β‡’ 맀우 가볍닀.
  3. Interchangeable - μ„œλΉ„μŠ€μ˜ μ—…λ°μ΄νŠΈ, μ—…κ·Έλ ˆμ΄λ“œλ₯Ό μΏ λ²„λ„€ν‹°μŠ€μ™€ 같은 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄ν„°λ₯Ό ν†΅ν•΄μ„œ 싀행은 μœ μ§€ν•˜λ©΄μ„œ μ§„ν–‰ν•  수 μžˆλ„λ‘ λ•λŠ”λ‹€. μžλ™ν™”λœ 도ꡬ μ‚¬μš©
  • Docker Image : App을 μ‹€ν–‰ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ λͺ¨λ“  것을 ν¬ν•¨ν•œ μ‹€ν–‰κ°€λŠ₯ν•œ νŒ¨ν‚€μ§€μ΄λ‹€.

    • μ½”λ“œ
    • 라이브러리
    • ν™˜κ²½ λ³€μˆ˜
    • μ„€μ • 파일 λ“±..
  • Docker Container : μ΄λ―Έμ§€μ˜ μ‹€ν–‰ μΈμŠ€ν„΄μŠ€

    • μ΄λ―Έμ§€λŠ” 싀행될 λ•Œ λ©”λͺ¨λ¦¬μ—μ„œ μ»¨ν…Œμ΄λ„ˆκ°€ λœλ‹€.
    • 같은 μ΄λ―Έμ§€λ‘œλΆ€ν„° μ—¬λŸ¬ 개의 μ»¨ν…Œμ΄λ„ˆκ°€ 싀행될 수 μžˆλ‹€.
  • Sharing Immutable Infrastructures μ»¨ν…Œμ΄λ„ˆμ˜ λ©”μΉ΄ = docker hub 도컀 ν—ˆλΈŒλ₯Ό ν†΅ν•΄μ„œ 동기화 κ°€λŠ₯ 일일이 μ„€μΉ˜ν•  ν•„μš” 없이, dockerfile을 톡해 κ°œλ°œν™˜κ²½μ„ ν•œλ²ˆμ— λ™μΌν•˜κ²Œ λ§Œλ“€ 수 μžˆλ‹€.

docker container run -it -d β€”rm β€”name ubuntuos ubuntu:latest

  • -it : interaction μƒν˜Έμž‘μš© ν‚€λ³΄λ“œ μž…μΆœλ ₯
  • -d β€”rm : μ»¨ν…Œμ΄λ„ˆκ°€ λλ‚˜λ©΄ μ‚­μ œν•΄λΌ.

docker exec -it ubuntuos /bin/bash

  • ubuntuos /bin/bash에 μžˆλŠ” νŒŒμΌμ„ 싀행해라 β‡’ ubuntu 싀행됨
  • μ»¨ν…Œμ΄λ„ˆ μž‘μ—…μ„ ν•˜κΈ° μœ„ν•΄ μž‘κ²Œ μ»¨ν…Œμ΄λ„ˆν™”ν•œ μš°λΆ„νˆ¬. 일반적인 μš°λΆ„νˆ¬λŠ” μ•„λ‹ˆλ‹€.

docker image rm -f ubuntu:latest

  • ubuntu:latestλ₯Ό -f κ°•μ œλ‘œ μ‚­μ œν•΄λΌ

μš°λΆ„νˆ¬μ˜ κΈ°λŠ₯이 많이 ν•„μš”ν•˜μ§€ μ•Šμ€ 경우 μ•ŒνŒŒμΈμ„ 많이 μ‚¬μš©ν•œλ‹€. λ‹¨μˆœνžˆ 크기가 μž‘μ•„μ„œ μ•ŒνŒŒμΈμ„ 많이 μ‚¬μš©ν•˜λŠ”κ°€? μ•„λ‹ˆλ‹€. μ•ŒνŒŒμΈμ΄ 크기가 μž‘μ§€λ§Œ busyboxλ₯Ό λ„£μ–΄ λ¦¬λˆ…μŠ€μ— μžˆλŠ” λͺ…령을 μ‚¬μš©ν•  수 μžˆλ‹€.

μ»¨ν…Œμ΄λ„ˆ κΈ°μˆ μ„ ν†΅ν•΄μ„œ μ‚¬μš©, μ‚­μ œ 용이 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λΉ λ₯΄κ²Œ 전달해쀀닀.