μλ νμΈμ ꡬλ μλ, DevOps μμκ³Ό κΈ°μ μ§μμ μ 리ν΄μ 곡μ ν΄λ리λ DevOps μ¬νμ μν μμμ§μ λλ€.
Docker μ΄λ―Έμ§λ μ ν리μΌμ΄μ μ΄ λμν μ μλ λ 립λ νκ²½μ μ 곡ν΄μ μ΄λ―Έ λ§μ κ°λ°μκ° μ¬μ©νκ³ μλλ°μ.
μ΄λ―Έ λκ΅°κ° λ§λ€μ΄λ Docker μ΄λ―Έμ§λ₯Ό μ¬μ©νκΈ°λ νμ§λ§, μ§μ Dockerfileμ μμ±ν΄μ Docker μ΄λ―Έμ§λ₯Ό λΉλνλ κ²½μ°λ λ§μ£ .
λμ± μμ ν Docker μ΄λ―Έμ§λ₯Ό μ μν μ μλ Dockerfile μμ± νμ΄ μλ€λ μ¬μ€, μκ³ κ³μ ¨λμ?
β οΈDockerfileμ μμ±ν λ 보μμ μ κ²½μ¨μΌ νλ μ΄μ
μ€λλ λλΆλΆμ μΉ μλΉμ€λ λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²λ₯Ό λ°λ₯΄κ³ μμ΅λλ€. νλμ 컀λ€λ μλΉμ€λ₯Ό λ°°ν¬νλ κ²μ΄ μλ, κΈ°λ₯μ΄λ μ±κ²©μ λ°λΌ λλ μ§ μμ μλΉμ€ μ¬λ¬ κ°λ₯Ό λ°°ν¬ λ° μ΄μνλ λ°©μμ λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²λΌκ³ νλλ°μ.
μ΄λ λ§μ΄ν¬λ‘μλΉμ€λ₯Ό κ°κ°μ Docker 컨ν μ΄λ λ΄λΆμμ λμνλλ‘ κ΅¬μ±νλ κ²μ΄ μΌλ°μ μ λλ€. νμ§λ§ μ΄λ κ² μ€μ λ‘ λ°°ν¬λ 컨ν μ΄λ μ΄λ―Έμ§κ° μΈλΆ 곡격μ μ·¨μ½νλ€λ©΄... μκ°λ§ ν΄λ μμ°ν 보μ μ¬κ³ λ‘ μ΄μ΄μ§κ² μ£ .
κ·Έλμ μ°λ¦¬λ Dockerfileμ μμ±ν λλΆν° 보μμ μ κ²½μ¨μΌ ν©λλ€.
πλμ± μμ ν μ΄λ―Έμ§λ₯Ό λ§λλ Dockerfile μμ± ν 5κ°μ§
κ·Έλ λ€λ©΄ Dockerfileμ μ΄λ»κ² μμ±ν΄μΌ ν κΉμ? μ¬κΈ° 보μμ κ°ν Dockerfile μμ± ν 5κ°μ§λ₯Ό μκ°ν΄λ립λλ€.
Multi-Stage λ°©μμΌλ‘ λΉλ
- Dockerfile λ΄μμ μ ν리μΌμ΄μ λΉλ λͺ λ Ήμ΄ μ€ν ν λμ€λ μ΅μ’ μ°μΆλ¬Όμ λλ€λ₯Έ Base Imageλ‘ λ³΅μ¬νκ³ , ν΄λΉ Base Imageλ₯Ό μ΅μ’ Docker Imageλ‘ λΉλνλ κΈ°λ²μ Multi-StageλΌκ³ νλλ°μ.
- Multi-Stage λ°©μμΌλ‘ λΉλλ Docker μ΄λ―Έμ§ λ΄μλ μ ν리μΌμ΄μ ꡬλμ νμν μ΅μνμ μμλ§ λ΄κ²¨μμΌλ―λ‘, μμ°μ€λ½κ² μ μ¬λ 보μ μ·¨μ½μ λ λ μ μ΄μ§λλ€.
νμμλ ν¨ν€μ§ μ κ±°
- Docker 컨ν μ΄λ λ΄ μ ν리μΌμ΄μ ꡬλμ νμμλ ν¨ν€μ§λ₯Ό μ κ±°νλ κ² μμ μ μ¬ λ³΄μ μ·¨μ½μ μ μ€μ¬μ£ΌκΈ° λλ¬Έμ κΆμ₯λ©λλ€.
Rootκ° μλ λ³λμ μ¬μ©μλ₯Ό μμ± λ° μ¬μ©
- Container λ΄μ Root κ³μ μ΄ μ¬μ©λ κ²½μ°, μΉ¨μ μ¬κ³ λ°μ μ νΌν΄κ° μ»€μ§ μ μμ΅λλ€. κ·Έλμ κΆνμ΄ μ νλ λ³λμ μ¬μ©μλ₯Ό μμ±νκ³ μ¬μ©νλ κ²μ΄ μμ ν©λλ€.
Container λ΄ λ―Όκ°ν νμΌλ€μ Read Onlyλ‘
- λ°°ν¬ μ΄ν Docker Container λ΄μμ μΆν μμ μ΄ νμνμ§ μλ νμΌλ€μ 'Read Only'λ‘ μ€μ νλ©΄ 보μμ±μ λμΌ μ μμ΅λλ€.
Shell μ κ·Ό μ κ±°
- 컨ν μ΄λ μμμ μ€ν κ°λ₯ν shλ bash λ±μ Shellμ λμ μ€μΈ 컨ν μ΄λ λ΄ μ ν리μΌμ΄μ μ λλ²κΉ ν λ μ¬μ©λλ κ²½μ°κ° μμ§λ§, μ΄λ° ν΅λ‘λ₯Ό μ κ±°νλ©΄ 컨ν μ΄λ λ΄λΆ μΉ¨μ μ΄ μ΄λ €μμ Έ 보μμ±μ΄ λμμ§λλ€.
- νμ§λ§ Shell μ κ·Όμ μ κ±°ν λ μλ μ£Όμμ¬νμ λν΄ κ³ λ €ν΄μΌ ν©λλ€.
- 컨ν μ΄λ μ΄λ―Έμ§μμ λμνλ μ ν리μΌμ΄μ μ΄ Shellμ μ¬μ©νκ³ μμ§ μμμ§ νμΈν΄μΌ ν©λλ€.
- ν΄λΉ μ΄λ―Έμ§λ₯Ό λ°°ν¬ν λ€μ μ ν리μΌμ΄μ μ λλ²κΉ ν μ μλ λ€λ₯Έ λμμ 미리 λ§λ ¨ν΄μΌ ν©λλ€.
π컨ν μ΄λ 보μμ μ§ν¬ μ μλ λλ€λ₯Έ λ°©λ²
μ§κΈκΉμ§ Dockerfileμ μμ±ν λ 보μμ±μ λμ΄λ λ°©λ²μ λν΄ μμλ΄€λλ°μ. λ§μ½ Docker μ΄λ―Έμ§λ₯Ό μ§μ λΉλνλ κ²½μ°κ° μλ, μ΄λ―Έ λκ΅°κ° μ μν Docker μ΄λ―Έμ§λ₯Ό μ¬μ©ν λ κ·Έ μ΄λ―Έμ§κ° μμ νμ§λ μ΄λ»κ² μ μ μμκΉμ?
μ΄λ΄ λ μ¬μ©ν μ μλ λ°©λ²μ΄ λ°λ‘ 컨ν μ΄λ 보μ μ€μΊλμ λλ€. λνμ μΈ μ»¨ν μ΄λ 보μ μ€μΊλ ν΄λ‘λ Trivyμ Clairκ° μλλ°μ.
컨ν μ΄λ μ΄λ―Έμ§ 보μ μ€μΊλμ λν΄μλ μ§λ μμμ§μμ λ€λ£¬ μ μ΄ μκΈ° λλ¬Έμ νΉμ κ΄μ¬ μμΌμλ€λ©΄ μλ λ§ν¬μμ νμΈν΄λ³΄μΈμ.π
πλ§μΉλ©°...
μ€λμ 컨ν μ΄λ μ΄λ―Έμ§ 보μμ μν Dockerfile μμ± ν 5κ°μ§μ 컨ν μ΄λ 보μ μ€μΊλμ λν΄ λ€λ€λ΄€λλ°μ.
νΉμ μ΄λ² λ΄μ© κ΄λ ¨ν΄μ λ κΆκΈν μ μ΄ μμΌμλ€λ©΄ μλ λ©μΌλ¦¬ λκΈ λ¨κ²¨μ£ΌμΈμ.π
κ·ΈλΌ, λ€μ μμμ§μμ λ³΄λ€ μμ°¨κ³ ν₯λ―Έλ‘μ΄ λ΄μ©μΌλ‘ μ°Ύμλ΅κ² μ΅λλ€.
μ€λλ κ°μ¬ν©λλ€, ꡬλ μλ πΊ
πReferences
μ견μ λ¨κ²¨μ£ΌμΈμ