πλ컀λ?
컨ν μ΄λ κΈ°λ°μ μ€νμμ€ κ°μν νλ«νΌ
컨ν μ΄λ κΈ°λ°μ κ°μν κΈ°μ μ μ¬μ©νμ¬ μμ© νλ‘κ·Έλ¨μ ν¨ν€μ§ννκ³ μ€νν μ μκ² ν΄μ€λ€.
μμ© νλ‘κ·Έλ¨κ³Ό λͺ¨λ μ’ μμ±μ ν¬ν¨νλ λ 립μ μΈ νκ²½μ λ§λ€μ΄ κ°λ°, λ°°ν¬, κ΄λ¦¬ κ°λ₯
β κ°μνλ₯Ό μ¬μ©νλ μ΄μ ?
1. μμ 곡μ
κ°μνλ₯Ό ν΅ν΄ μ¬λ¬ μμ© νλ‘κ·Έλ¨ λλ μλΉμ€λ₯Ό λμΌν λ¨Έμ μμ λ
립μ μΌλ‘ μ€νν μ μμ΅λλ€.
2. νκ²½ 격리
κ° μμ© νλ‘κ·Έλ¨ λλ μλΉμ€λ₯Ό 격리λ νκ²½μμ μ€ννμ¬ μνΈ κ°μ μν₯μ μ΅μνν μ μμ΅λλ€.
3. μ μ°μ±
κ°μ λ¨Έμ λλ 컨ν
μ΄λλ₯Ό ν΅ν΄ μ½κ² μμ© νλ‘κ·Έλ¨μ λ°°ν¬νκ³ νμ₯ν μ μμ΅λλ€.
4. μ±λ₯ ν₯μ
νΈμ€νΈ λ¨Έμ μ μμμ ν¨μ¨μ μΌλ‘ νμ©νμ¬ μμ© νλ‘κ·Έλ¨μ μ±λ₯μ ν₯μμν¬ μ μμ΅λλ€.
5. κ°λ° λ° ν μ€νΈ
κ°μ νκ²½μ μ¬μ©νμ¬ κ°λ° λ° ν μ€νΈλ₯Ό μννλ©΄ μ€μ μ΄μ νκ²½κ³Ό μ μ¬ν νκ²½μμ λ¬Έμ λ₯Ό μλ³νκ³ ν΄κ²°ν μ μμ΅λλ€.
β vm λ¨μ
- μμμ μ€λ³΅ 볡μ λ‘, λλΉλλ κ³΅κ° λ°μ
- νΈμ€νΈ μμ€ν μμ μΆκ° μμ€ν μ΄ μ€νλκ³ μκΈ°μ 무κ²κ³ λλ¦Ό. μ±λ₯μ ν μ λ°
- 곡μ ν μ μλ λ¨μΌ ꡬμ±νμΌμ΄ μκΈ° λλ¬Έμ, μ¬μμ° λ° κ³΅μ μμ λκ° λ¨μ΄μ§
π λ컀 μ₯μ λ¨μ
β μ₯μ
- 컨ν
μ΄λνλ νκ²½
λ컀λ μμ© νλ‘κ·Έλ¨μ 컨ν μ΄λλ‘ λ¬Άμ΄ νκ²½ 격리
μμ© νλ‘κ·Έλ¨μ νΈμ€νΈ μμ€ν κ³Όλ λ 립μ μΌλ‘ μ€νλλ©° μ΄μμ±μ΄ λ°μ΄λ¨ - κ°νΈν λ°°ν¬
λ컀 μ΄λ―Έμ§λ κ°λ³κ³ μ΄μ κ°λ₯νλ©°, λΉ λ₯΄κ² λ°°ν¬ν μ μλ€.
μ΄λ―Έμ§λ κ°λ° νκ²½κ³Ό μ΄μ νκ²½ κ°μ μΌκ΄μ± μκ² μ μ§ - μ±λ₯
λ컀 컨ν μ΄λλ νΈμ€νΈ μ΄μ 체μ μμ μ§μ μ€νλλ―λ‘ κ°λ³κ³ λΉ λ¦
μ¬λ¬ κ°μ 컨ν μ΄λλ₯Ό λμμ μ€νν μ μμΌλ―λ‘ μμ 곡μ μ μ΅μ ν κ°λ₯ - μ€μΌμΌλ§ λ° κ΄λ¦¬ μ©μ΄μ±
λ컀λ νμμ λ°λΌ 컨ν μ΄λ μΈμ€ν΄μ€λ₯Ό λΉ λ₯΄κ² μμ±νκ³ κ΄λ¦¬ν μ μμ΄μ μ€μΌμΌλ§μ΄ μ©μ΄
Docker Compose λ° Kubernetesμ κ°μ κ΄λ¦¬ λꡬλ₯Ό μ¬μ©νμ¬ μ»¨ν μ΄λνλ μ ν리μΌμ΄μ μ μ½κ² κ΄λ¦¬ν μ μλ€ - κ°λ° νκ²½μ νμ€ν
λ컀λ κ°λ° νκ²½μ μ΄λ―Έμ§λ‘ μ μνμ¬ λͺ¨λ κ°λ°μκ° λμΌν νκ²½μμ μμ ν μ μλλ‘ ν¨
β λ¨μ
- 보μ μν
κ°μνλ ν경보λ€λ 보μμ΄ λ¨μ΄μ§ μ μλ€.
컨ν μ΄λμ 격리λ κ°μνλ³΄λ€ λ μ·¨μ½ν μ μμΌλ©°, 컨ν μ΄λ κ°μ μ 보 μ μΆμ΄ λ°μν μ μμ - 볡μ‘μ±
λ컀λ μ΄κΈ° νμ΅ κ³‘μ μ΄ μμΌλ©°, μ€μ λ° κ΄λ¦¬κ° κ°μν보λ€λ 볡μ‘ν μ μλ€.
볡μ‘ν λ€νΈμν¬ κ΅¬μ±μ΄λ 보μ μꡬ μ¬νμ μΆ©μ‘±νκΈ° μν΄ μΆκ°μ μΈ μ€μ μ΄ νμν μ μλ€ - μμ μλͺ¨
λ컀 컨ν μ΄λλ νΈμ€νΈ μ΄μ 체μ μ 컀λμ 곡μ νλ―λ‘ κ°μν보λ€λ μμ μλͺ¨κ° μ μ§λ§, μ¬μ ν μΆκ°μ μΈ μμμ νμ
νΉν λ§μ μμ 컨ν μ΄λλ₯Ό μ€νν κ²½μ° CPU λ° λ©λͺ¨λ¦¬ μμμ΄ μλͺ¨λ μ μλ€. - μ§μμ μΈ μ μ§λ³΄μ
λ컀 μ΄λ―Έμ§μ 컨ν μ΄λλ κ³μν΄μ μ λ°μ΄νΈλμ΄μΌ νλ©°, μ΄λ₯Ό μ μ§νκΈ° μν΄μλ μΆκ°μ μΈ κ΄λ¦¬κ° νμ
βΌ κ°λ°κ³Ό λ°°ν¬μ ν¨μ¨μ±μ ν₯μμν€μ§λ§, 보μ λ° κ΄λ¦¬μ 볡μ‘μ±κ³Ό μμ μλͺ¨ λ±μ λ¨μ λ κ³ λ €ν΄μΌ ν¨.
β λ컀 μ΄λ―Έμ§?
μννΈμ¨μ΄ μ ν리μΌμ΄μ μ μ€ννλ λ° νμν λͺ¨λ κ²μ ν¬ν¨νλ ν νλ¦Ώ
νμΌ μμ€ν , νκ²½ λ³μ, λΌμ΄λΈλ¬λ¦¬, λ° μ’ μμ±μ ν¬ν¨
β λ컀 컨ν μ΄λλ?
λ컀 μ΄λ―Έμ§μ μΈμ€ν΄μ€λ‘, μ€ν κ°λ₯ν κ°μ νκ²½
컨ν μ΄λλ 격리λ 곡κ°μμ μ€νλλ©°, νΈμ€νΈ μμ€ν μ μμμ μ¬μ©
β λ컀νμΌμ΄λ?
λ컀 μ΄λ―Έμ§λ₯Ό λ§λ€κΈ° μν λΉλ μ§μμ¬νμ ν¬ν¨νλ ν μ€νΈ νμΌ
λ² μ΄μ€ μ΄λ―Έμ§, ν¨ν€μ§ μ€μΉ, νκ²½ λ³μ μ€μ , νμΌ λ³΅μ¬ λ° μ€ν λͺ λ Ή λ±μ΄ ν¬ν¨
π λͺ λ Ήμ΄
λ컀 νλΈ
Docker Hubλ μ¬λ¬λΆμ΄ λ컀 μ΄λ―Έμ§λ₯Ό 곡μ νκ³ μ°Ύμ μ μλ νλ«νΌ
λ컀 μ΄λ―Έμ§λ λ΄κ° λ§λ€μ§ μλ μ΄μ 곡μμ μΈ Docker Hubλ± Docker Registryλ‘ λΆν° Docker μ΄λ―Έμ§λ₯Ό λ€μ΄λ‘λ
docker image pull
μ΄λ―Έμ§ λΉλ λ° μ€ν
# μ΄λ―Έμ§ λΉλ
$ docker build -t <μ΄λ―Έμ§μ΄λ¦>:<νκ·Έ> [Dockerfile κ²½λ‘]
# μ΄λ―Έμ§ μ€ν
$ docker run --name <컨ν
μ΄λ μ΄λ¦> -p <νΈμ€νΈν¬νΈ>:<컨ν
μ΄λν¬νΈ> <μ€νν μ΄λ―Έμ§λͺ
>[:tag_version]
# μ΄λ―Έμ§ νμΈ
$ docker images
μ΄λ―Έμ§ μμ
# λͺ¨λ μ΄λ―Έμ§ μμ
$ sudo docker rmi -f $(sudo docker images -q)
λλ
# νΉμ κ°λ§ μμ
$ sudo docker rmi [μμ΄λκ°]
$ sudo docker rmi [μ΄λ¦]
컨ν μ΄λ μ€ν
# Run
$ docker run -it -d --name {container_name}
$ docker run [μ΅μ
] [μ΄λ―Έμ§λͺ
:Tag]
- 컨ν μ΄λ μ΄λ¦μ μ§μ νμ¬ μ€ννκΈ°
$ docker run -it -d --name my_container ubuntu:latest
λ°±κ·ΈλΌμ΄λμμ μ€νλλ μλ‘μ΄ μ»¨ν μ΄λλ₯Ό μμ±νκ³
μ΄λ¦μ my_container
λ‘ μ§μ
-it
μ΅μ
μ 컨ν
μ΄λλ₯Ό λννμΌλ‘ μ€ν
-d
μ΅μ
μ λ°±κ·ΈλΌμ΄λ λͺ¨λλ‘ μ€ν
- μ΅μ μ μ¬μ©νμ¬ μ΄λ―Έμ§ μ€ννκΈ°
$ docker run -p 8080:80 -v /host/path:/container/path -d my_image:latest
my_image:latest
μ΄λ―Έμ§λ₯Ό μ¬μ©νμ¬ λ°±κ·ΈλΌμ΄λμμ μ€νλλ 컨ν
μ΄λ μμ±
-p 8080:80
μ΅μ
μ νΈμ€νΈμ 8080 ν¬νΈλ₯Ό 컨ν
μ΄λμ 80 ν¬νΈλ‘ ν¬μλ©νλ©°,
-v /host/path:/container/path
μ΅μ
μ νΈμ€νΈμ /host/path
λλ ν 리λ₯Ό 컨ν
μ΄λμ /container/path
λλ ν 리μ λ§μ΄νΈν©λλ€.
-d
μ΅μ
μ 컨ν
μ΄λλ₯Ό λ°±κ·ΈλΌμ΄λ λͺ¨λλ‘ μ€νν©λλ€.
컨ν μ΄λμ λν bashμ€ν
$ docker exec -it [컨ν
μ΄λμ΄λ¦] bash
μ€νμ€μΈ 컨ν μ΄λ νμΈ
$ docker ps -a
$ docker ps
컨ν μ΄λ μμ± λ° μ€ν
# μ€νμ€μΈ 컨ν
μ΄λ μ μ§
$ docker stop $(sudo docker ps -q)
# 컨ν
μ΄λ μμ
$ docker rm $(sudo docker ps -a -q)
λ컀 컨ν μ΄λ commit & push
$ docker commit [컨ν
μ΄λμ΄λ¦] [μ΄λ―Έμ§μ΄λ¦]
$ docker tag [μ΄λ―Έμ§ ID λλ μ΄λ―Έμ§ μ΄λ¦]:[νκ·Έ] [μ¬μ©μ μ΄λ¦]/[μ΄λ―Έμ§ μ΄λ¦]:[νκ·Έ]
$ docker login
$ docker push [μ¬μ©μ μ΄λ¦]/[μ΄λ―Έμ§ μ΄λ¦]:[νκ·Έ]
λ컀νμΌ μμ±
vi Dockerfile
# λ² μ΄μ€ μ΄λ―Έμ§ μ€μ
FROM ubuntu:latest
# μμ
λλ ν 리 μ€μ
WORKDIR /app
# νμν νμΌ λ³΅μ¬
COPY . /app
# ν¨ν€μ§ μ€μΉ
RUN apt-get update && apt-get install -y \
python3 \
python3-pip
# μ ν리μΌμ΄μ
μ€ν
CMD ["python3", "app.py"]
- μμ λ‘κ² μμ λ³κ²½ κ°λ₯ν νμΌ