1. λ컀(Docker)λ?
λ컀λ κ°μνμ ν μ’ λ₯μΈ μ»¨ν μ΄λλ₯Ό μ΄μ©νμ¬ νλ‘μΈμ€λ₯Ό 격리μμΌμ£Όλ μ€νμμ€ νλ‘μ νΈλ‘ 2013λ 3μμ μλ‘λͺ¬ νμ΅μ€μ μν΄ μ²« 릴리μ¦κ° λμλ€. λ컀λ λΌμ΄λΈλ¬λ¦¬, μμ€ν λꡬ, μ½λ λ± μννΈμ¨μ΄ μ€νμ νμν λͺ¨λ κ²λ€μ ν¬ν¨ν κ²μ 컨ν μ΄λλΌλ νμ€νλ μ λμΌλ‘ ν¨ν€μ§νμ¬ μ¬μ©νλ€. λ컀λ₯Ό μ¬μ©νλ©΄ κ°λ° νκ²½μ μ½κ² ꡬμΆν μ μκ³ λ 립μ μΈ νκ²½μμ λμν μ μλ λ±μ λ§μ μ₯μ μ΄ μ‘΄μ¬νμ¬ μμ¦μ λλΆλΆμ κΈ°μ λ€μμ μ΄μ©νκ³ μλ€.
λ컀μ μ₯μ μ λν λ΄μμ μ΄νμ μμΈν μ΄ν΄λ³΄κ³ λ¨Όμ λ컀μ ν΅μ¬ κ°λ μΈ μ΄λ―Έμ§μ 컨ν μ΄λμ λν΄ μμλ³΄κ² λ€.
2. 컨ν μ΄λλ
컨ν μ΄λλ κ°μνμ ν μ’ λ₯λ‘ μ ν리μΌμ΄μ μ΄ κ²©λ¦¬λ 곡κ°μμ λΉ λ₯΄κ³ μμ μ μΌλ‘ μ€νλ μ μλλ‘ μ½λμ λͺ¨λ μ’ μμ±μ ν¨ν€μ§νλ μννΈμ¨μ΄μ νμ€ κΈ°μ μ΄μ νλ‘μΈμ€κ° λμνλ κΈ°μ μ΄λ€.
κ°μνλ₯Ό μκ°νλ©΄ κ°μ₯ λνμ μΌλ‘ λ μ€λ₯΄λ κ²μ κ°μλ¨Έμ (VM)μΌ κ²μ΄λ€. 컨ν μ΄λμ λμ»€κ° λμ€κΈ° μ κΉμ§λ νλμ PCμμ λ€λ₯Έ νκ²½μ ꡬμΆνκ³ μ νλ©΄ νμ΄νΌλ°μ΄μ (Hypervisor)λ₯Ό μ΄μ©ν΄ νλμ νΈμ€νΈμμ μ¬λ¬κ°μ Guest OSλ₯Ό μ¬μ©ν΄ μ¬μ©νμλ€. μ΄λ κ°κ°μ κ²μ€νΈOSλ λ€λ₯Έ κ²μ€νΈ OSμ λ 립λ 곡κ°κ³Ό μμ€ν μμμ ν λΉλ°μ μ¬μ©νλ€. νμ§λ§ μ΄λ¬ν κ°μλ¨Έμ μ λ°©μμ μλμ κ°μ λ¨μ μ΄ μ‘΄μ¬νμλ€.
κΈ°μ‘΄ κ°μλ¨Έμ λ°©μμ λ¨μ
- κ°μ’ μμ€ν μμμ κ°μννκ³ λ 립λ 곡κ°μ μμ±νλ μμ μ νμ΄νΌλ°μ΄μ λ₯Ό κ±°μ³μΌν΄μ μ±λ₯μ μμ€μ΄ λ°μνλ€.
- κ°μ λ¨Έμ μ κ²μ€νΈ OSλ₯Ό μ¬μ©νκΈ° μν λΌμ΄λΈλ¬λ¦¬, 컀λ λ±μ μ λΆ ν¬ν¨νκΈ° λλ¬Έμ κ°μ λ¨Έμ μ λ°°ν¬νκΈ° μν μ΄λ―Έμ§λ‘ λ§λ€μμ λ, μ΄λ―Έμ§ ν¬κΈ°κ° 컀μ§λ€.
β κ°μ λ¨Έμ μ μλ²½ν OSλ₯Ό λ§λ€ μλ μμ§λ§ μΌλ° νΈμ€νΈμ λΉν΄ μ±λ₯ μμ€μ΄ μκ³ , μ©λμ΄ μ»€μ κ°μλ¨Έμ μ΄λ―Έμ§λ₯Ό μ ν리μΌμ΄μ μΌλ‘ λ°°ν¬νκΈ°μλ λΆλ΄μ€λ½λ€.
컨ν μ΄λλ κ°μλ¨Έμ κ³Ό λ€λ₯΄κ² νλμ¨μ΄λ₯Ό κ°μννλ κ²μ΄ μλ μ΄μ체μ λ₯Ό κ°μννμ¬ νλ‘μΈμ€ μ€ν 곡κ°μ λΆλ¦¬νλ€. κΈ°μ‘΄ κ°μ λ¨Έμ μ κ²½μ° νμ΄νΌλ°μ΄μ μμμ λ©λͺ¨λ¦¬μ κ°μ νλμ¨μ΄ μμλ€μ κ°μννμμ§λ§ 컨ν μ΄λλ λ컀μ κ°μ νλ«νΌ μμμ νλ‘μΈμ€λ₯Ό 격리νλ€. λλΆμ νΈμ€νΈ, κ²μ€νΈ OSλ₯Ό λ°λ‘ λ§λ€μ΄ νλ‘μΈμ€λ₯Ό 격리νλ μ€λ²ν€λλ μ€μΌ μ μμκ³ , OSμμ OSλ₯Ό μ€νμν€λ μμ λ μ§νν νμκ° μμ΄μ Έ κ°λ³κ² μ€νμν¬ μ μλ€.
λ컀 컨ν μ΄λλ κ°μνλ 곡κ°μ μμ±νκΈ° μν΄ λ¦¬λ μ€μ μ체 κΈ°λ₯μΈ chroot, namespace, cgroupμ μ¬μ©ν¨μΌλ‘μ¨ νλ‘μΈμ€ λ¨μμ 격리 νκ²½μ λ§λ€κΈ° λλ¬Έμ μμ€μ΄ κ±°μ μλ€.
- 컨ν μ΄λμ νμν 컀λμ νΈμ€νΈ OSλ₯Ό 곡μ νμ¬ μ¬μ©νκ³ μ»¨ν μ΄λμλ μ ν리μΌμ΄μ μ ꡬλνλλ° νμν λΌμ΄λΈλ¬λ¦¬ λ° μ€ν νμΌλ§ μ‘΄μ¬νκΈ° λλ¬Έμ μ΄λ―Έμ§ μ©λμ΄ μλ€
3. λ컀λ₯Ό μ¬μ©νλ μ΄μ
컨ν μ΄λλ₯Ό μ¬μ©νλ κΈ°μ λ‘λ OpenVZ, LXC, cri-o λ±μ μ¬λ¬κ°μ§ κΈ°μ μ΄ μ‘΄μ¬νμ§λ§ μ¬μ€μ λμ»€κ° νμ€μ΄ λμ΄ λ§μ μ¬λλ€μ΄ μ¬μ©νκ³ μλ€. μ΄λ¬ν νμμλ μ΄μ κ° μλ€.
-
μ ν리μΌμ΄μ μ κ°λ°κ³Ό λ°°ν¬κ° νΈν΄μ§λ€.
- λ컀 컨ν μ΄λλ νΈμ€νΈ OS μμμ μ€νλλ 격리λ 곡κ°μ΄λΌ 컨ν μ΄λμ νΉλ³ν κΆνμ μ£Όμ§ μμΌλ©΄ 컨ν μ΄λ λ΄λΆμμ μ¬λ¬ μμ μ νμ¬λ νΈμ€νΈ OSμλ μν₯μ λΌμΉμ§ μλλ€. μ¦, λ 립λ κ°λ° νκ²½μ 보μ₯ λ°μ μ μλ€.
- 컨ν μ΄λ λ΄λΆμμ μμ μ λ§μΉ λ€ λ°°ν¬λ₯Ό νλ €λ©΄ λ컀 μ΄λ―Έμ§λ₯Ό λ§λ€μ΄ μ΄μμλ²μλ§ μ λ¬νλ©΄ λλ λ―μ΄ νΈλ¦¬νλ€. μ΄λ μ΄μ μλ²μλ μλ‘κ² ν¨ν€μ§, λΌμ΄λΈλ¬λ¦¬ μ€μΉ λ±μ ν νμκ° μμΌλ©° λ컀 μ΄λ―Έμ§λ§μ μ€μΉ λ° μ€ννλ κ²μΌλ‘λ λμΌν νκ²½ ꡬμΆμ νΈλ¦¬νκ² ν μ μλ€. β κ°λ°/μ΄μ νκ²½μ ν΅ν©μ΄ κ°λ₯ν΄μ§λ€.
- λ컀 μ΄λ―Έμ§λ 컀λμ ν¬ν¨νκ³ μμ§ μμμ μ΄λ―Έμ§μ ν¬κΈ°κ° ν¬μ§ μλ€.
- λ컀λ μ΄λ―Έμ§ λ΄μ©μ λ μ΄μ΄ λ¨μλ‘ κ΅¬μ±νλ©° μ€λ³΅λλ λ μ΄μ΄λ₯Ό μ¬μ¬μ©ν μ μμ΄μ μ ν리μΌμ΄μ μ λ°°ν¬ μλκ° λΉ¨λΌμ§λ€λ μ₯μ μ΄ μλ€.
-
μ¬λ¬ μ ν리μΌμ΄μ μ λ 립μ±κ³Ό νμ₯μ±μ΄ λμμ§λ€.
-
μλΉμ€μ κ·λͺ¨κ° 컀μ§μλ‘ λͺ¨λ리μ€(Monolith)κ° μλ λ§μ΄ν¬λ‘μλΉμ€(Microservices)κ΅¬μ‘°κ° μ νΈλλ€. 컨ν μ΄λλ μ μ΄ λ΄λ‘ μμ±, μμμ΄ κ°λ₯νκ³ λ 립λ νκ²½μ λμμ μ 곡ν μ μμ΄μ λ§μ΄ν¬λ‘μλΉμ€ ꡬ쑰μ λ§μ΄ μ¬μ©λκ³ μλ€.
λͺ¨λλ¦¬μ€ κ΅¬μ‘°λ μ¬λ¬ λͺ¨λμ΄ μνΈμμ©νλ λ‘μ§μ νλμ νλ‘κ·Έλ¨μμ ꡬλνμ¬μ νμ₯μ±κ³Ό μ μ°μ±μ΄ μ€μ΄λ λ€.
λ§μ΄ν¬λ‘ μλΉμ€ ꡬ쑰λ μ¬λ¬ λͺ¨λμ λ 립μ μΈ ννλ‘ κ΅¬μ±νμ¬ μΈμ΄μ μ’ μλμ§ μκ³ λ³νμ λΉ λ₯΄κ² λμν μ μμΌλ©°, κ° λͺ¨λμ κ΄λ¦¬κ° μ¬μμ§λ€λ μ₯μ μ΄ μλ€.
-
4. λ컀 λͺ λ Ήμ΄ μμ보기
-
λ컀 μ€μΉμ 보 보기
$ docker info
-
λ컀 λ²μ 보기
$ docker -v
-
λ컀 μ΄λ―Έμ§ Pull
$ docker pull centos:7
λ컀μμ μ¬μ©νλ μ΄λ―Έμ§μ μ΄λ¦μ
[μ μ₯μ μ΄λ¦]/[μ΄λ―Έμ§ μ΄λ¦]:[νκ·Έ]
μ ννλ‘ κ΅¬μ±λλ€.- ex) seongwon97/ubuntu:14.04 or ubuntu:latest
- μ μ₯μ μ΄λ¦μ μ΄λ―Έμ§κ° μ μ₯λ μ₯μλ₯Ό μλ―Ένλ€. μ μ₯μκ° λͺ μλμ§ μμ μ΄λ―Έμ§λ λ컀μμ κΈ°λ³Έμ μΌλ‘ μ 곡νλ μ΄λ―Έμ§ μ μ₯μμΈ λ컀 νλΈμ 곡μ μ΄λ―Έμ§λ₯Ό λ»νλ€.
- μ΄λ―Έμ§ μ΄λ¦μ ν΄λΉ μ΄λ―Έμ§κ° μ΄λ€ μν μ νλμ§ λνλΈλ€. μ΄λ―Έμ§ μ΄λ¦μ μλ΅ν μ μμ΄ λ°λμ μ€μ ν΄μΌ νλ€.
- νκ·Έλ μ΄λ―Έμ§ λ²μ κ΄λ¦¬, νΉμ 리λΉμ (revision) κ΄λ¦¬μ μ¬μ©νλ€. νκ·Έλ₯Ό μλ΅νλ©΄ λ컀 μμ§μ μ΄λ―Έμ§ νκ·Έλ₯Ό
latest
λ‘ μΈμνλ€.
-
λ컀 μ΄λ―Έμ§ λͺ©λ‘ 보기
$ docker images
-
컨ν μ΄λ μμ±
$ docker create -i -t --name mycentos centos:7
λ€μκ³Ό κ°μ΄ 컨ν μ΄λλ₯Ό μμ±νλ©΄ μλμ κ°μ΄ μ΄μν κ°μ΄ λμ¬ κ²μ΄λ€.
ν΄λΉ μ«μλ 컨ν μ΄λμ κ³ μ IDλ₯Ό μλ―Ένλ 16μ§μμ ν΄μκ°μΌλ‘ μΌλ°μ μΌλ‘λ λ무 κΈΈμ΄μ 12μλ¦¬λ§ μ¬μ©νλ€.
π 컨ν μ΄λμ ν΄μ κ°μ
docker inspect
λͺ λ Ήμ΄λ‘ 컨ν μ΄λμ idλ₯Ό λ€μ νμΈν μ μλ€. (컨ν μ΄λ μ 보 μ체λ₯Ό νμΈ)πΒ λͺ¨λ λͺ λ Ήμ΄λ 컨ν μ΄λ μ΄λ¦λΏλ§ μλλΌ μ»¨ν μ΄λμ idλ₯Ό ν΅ν΄μλ μ€ν κ°λ₯νλ€. μ΄λ¦μ΄ λ무 κΈ΄ κ²½μ° μμ 2~3μλ§ μ λ ₯ν΄λ λλ€. (Git commit logμ μ μ¬)
-
컨ν μ΄λ μ 보 νμΈ
$ docker inspect mycentos // 컨ν μ΄λ IDνμΈ $ docker inspect mycentos | grep Id
-
컨ν μ΄λ μ€ν
$ docker start mycentos
-
runμ ν΅ν λ컀 컨ν μ΄λ μμ± λ° μ€ν (μ΄λ―Έμ§κ° μμΌλ©΄ μλ λ€μ΄ λ° μ€ν)
run
μpull
,create
,start
λͺ λ Ήμ΄λ₯Ό μΌκ΄μ μΌλ‘ μ€νν ν attachκ° κ°λ₯ν 컨ν μ΄λλ©΄ λ΄λΆκΉμ§ λ€μ΄κ°μ€λ€.
$ docker run -i -t ubuntu:latest
-
run
μ λ€μν μ΅μ λ€μ΅μ μ€λͺ -d detatched λͺ¨λλ‘ μ»¨ν μ΄λλ₯Ό μ€νμμΌ μ»¨ν μ΄λλ₯Ό λ°±κ·ΈλΌμ΄λμμ λμνλ μ ν리μΌμ΄μ μΌλ‘ μ€ννλλ‘ μ€μ νλ€. -p νΈμ€νΈ ν¬νΈμ 컨ν μ΄λ λ΄λΆμ ν¬νΈλ₯Ό λ°μΈλνλ€. -v λ컀 λ³Όλ₯¨μ λν μ€μ μ΄λ€. 컨ν μ΄λ λ΄λΆμ λλ ν 리λ₯Ό νΈμ€νΈλ‘ λ§μ΄νΈ (μ°κ²°) νλ€. -e 컨ν μ΄λ λ΄λΆ OSμ νκ²½λ³μλ₯Ό μ€μ νλ€. --name 컨ν μ΄λμ μ΄λ¦μ μ€μ νλ€. --rm 컨ν μ΄λκ° μ’ λ£λ κ²½μ° μ»¨ν μ΄λ μ체λ₯Ό μμ νλ€. -it ν°λ―Έλ μ λ ₯μ μν μ΅μ .Β -iμ΅μ κ³ΌΒ -tμ΅μ μ μ£Όλ‘ ν¨κ» μ¬μ©λλ€. (-i μ΅μ μ 컨ν μ΄λ λ΄λΆλ‘ μ§μ νλλ‘ attachκ° κ°λ₯ν μνλ‘ μ€μ νμ¬ μ»¨ν μ΄λμ μνΈ μ μΆλ ₯μ κ°λ₯νκ² νλ©° , -tμ΅μ μ ttyλ₯Ό νμ±ννμ¬ bash shellμ μ¬μ©νλλ‘ νλ€. ) -w WORKDIR λ₯Ό μ€μ νλ€.
-
컨ν μ΄λ λ΄λΆλ‘ μ μ
$ docker attach mycentos
μ μν 컨ν μ΄λλ₯Ό λκ°λ λ°©λ²
exit
,ctrl + D
: ν΄λΉ λ°©λ²μ bash shellκ³Ό 컨ν μ΄λλ₯Ό λκ°λ©΄μ 컨ν μ΄λλ₯Ό μ μ§μν€κΈ°κΉμ§ νλ€.ctrl + P, Q
: λ¨μν 컨ν μ΄λμ shellμμλ§ λΉ μ Έλμ¨λ€.
-
컨ν μ΄λ λͺ©λ‘ νμΈ
// μ μ§λμ§ μμ 컨ν μ΄λλ§ μΆλ ₯ $ docker ps // λͺ¨λ 컨ν μ΄λλ₯Ό μΆλ ₯ $ docker ps -a // λͺ¨λ 컨ν μ΄λμ id μΆλ ₯ // -q μ΅μ μ 컨ν μ΄λμ IDλ§ μΆλ ₯νλ€. $ docker ps -a -q
-
docker ps -a
μ λμ€λ μ 보λ€-
CONTAINER ID: 컨ν μ΄λμκ² μλμΌλ‘ ν λΉλλ κ³ μ ν IDμ΄λ€.
- μΆλ ₯κ°μλ IDμ μΌλΆκ° λμμκ³ μ 체 IDλ
docker inspect mycentos | grep Id
λͺ λ Ήμ΄λ₯Ό ν΅ν΄ νμΈν μ μλ€.
- μΆλ ₯κ°μλ IDμ μΌλΆκ° λμμκ³ μ 체 IDλ
- COMMAND: 컨ν μ΄λκ° μμλ λ μ€νλ λͺ λ Ήμ΄μ΄λ€. λλΆλΆμ 컀λ©λλ μ΄λ―Έμ§μ 미리 λ΄μ₯λμ΄ μμ΄μ λ³λλ‘ μ€μ ν νμκ° μλ€.
- CREATED: 컨ν μ΄λκ° μμ±λκ³ λ λ€ νλ₯Έ μκ°μ λνλΈλ€.
-
STATUS: 컨ν μ΄λμ μνλ₯Ό λνλΈλ€.
- UP: 컀λ€μ΄λκ° μ€νμ€μ΄λ€.
- Exited: μ’ λ£λ μνμ΄λ€.
- Pause: μΌμ μ€μ§λ μνμ΄λ€.
- PORTS: 컨ν μ΄λκ° κ°λ°©ν ν¬νΈμ νΈμ€νΈμ μ°κ²°ν ν¬νΈλ₯Ό λμ΄νλ€.
-
NAMES: 컨ν μ΄λμ κ³ μ ν μ΄λ¦μ΄λ€.
--name
μ΅μ μΌλ‘ μ΄λ¦μ μ€μ νμ§ μμΌλ©΄ λ컀 μμ§μ΄ μμλ‘ νμ©μ¬μ λͺ μ¬λ₯Ό 무μμλ‘ μ‘°ν©ν΄ μ΄λ¦μ μ€μ νλ€.- 컨ν μ΄λ μ΄λ¦λ IDμ κ°μ΄ μ€λ³΅λ μ΄λ¦μΌλ‘ μμ±μ΄ λΆκ°λ₯νλ€.
- μ΄λ¦ λ³κ²½μ
docker rename {컨ν μ΄λμ μ΄μ μ΄λ¦} {μλ‘μ΄ μ΄λ¦}
μ ν΅ν΄ λ³κ²½ν μ μλ€.
-
-
-
컨ν μ΄λ μμ
// νΉμ μ΄λ―Έμ§ μ κ±° (μ€νλ κ²μ μμ λΆκ°) $ docker rm {μ΄λ―Έμ§ μ΄λ¦ or Id} // μ€νμ€μΈ κ²λ μ κ±° κ°λ₯ $ docker rm -f {μ΄λ―Έμ§ μ΄λ¦ or Id} // λͺ¨λ 컨ν μ΄λ μμ $ docker container prune
-
detached λͺ¨λμ 컨ν μ΄λ μ κ·Ό
- detathed λͺ¨λλ‘ λ§λ€μ΄μ§ containerλ
docker attach
λͺ λ Ήμ΄λ‘ λ΄λΆ ν°λ―Έλμ μ κ·Όν μ μλ€. μ΄λ° κ²½μ° docker execλͺ λ Ήμ΄λ₯Ό μ¬μ©νλ©΄ μ κ·Όν μ μλ€.
docker exec -i -t {컨ν μ΄λ μ΄λ¦} /bin/bash
- detathed λͺ¨λλ‘ λ§λ€μ΄μ§ containerλ
πΒ docker stop, start, restart λ±μ λͺ λ Ήμ΄λ₯Ό μ¬μ©ν λλ μ¬λ¬κ°μ 컨ν μ΄λ μ΄λ¦μ μμ°¨μ μΌλ‘ μ λ ₯νμ¬ λμμ μνν μλ μλ€.