Skip to content

Latest commit

ย 

History

History
176 lines (82 loc) ยท 6.98 KB

File metadata and controls

176 lines (82 loc) ยท 6.98 KB

๋„์ปค (Docker)

์šด์˜์ฒด์ œ ์ˆ˜์ค€ ๊ฐ€์ƒํ™”(Operating-system-level virtualization, ๋˜๋Š” Containerization)๋ฅผ ์ง€์›ํ•˜๋Š” ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ.1

์šด์˜์ฒด์ œ ์ˆ˜์ค€ ๊ฐ€์ƒํ™”๋ž€, ์šด์˜์ฒด์ œ์˜ ์ปค๋„์ด ๋‘ ๊ฐœ ์ด์ƒ์˜ ๊ฒฉ๋ฆฌ๋œ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ–์ถœ ์ˆ˜ ์žˆ๋„๋กํ•˜๋Š” ์„œ๋ฒ„ ๊ฐ€์ƒํ™” ๋ฐฉ์‹์„ ์˜๋ฏธ.2

์ด๋•Œ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์€ ์‘์šฉ ์†Œํ”„ํŠธ์›จ์–ด์™€ ์ผ๋ถ€ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๋™์ž‘ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๋œปํ•จ.3

์ข…ํ•ฉํ•˜์ž๋ฉด, ๋„์ปค๋Š” ์šด์˜์ฒด์ œ์˜ ์ปค๋„ ์œ„์— ๋‘ ๊ฐœ ์ด์ƒ์˜ ๊ฒฉ๋ฆฌ๋œ ๊ณต๊ฐ„์—์„œ ์‘์šฉ ์†Œํ”„ํŠธ์›จ์–ด ๋“ฑ์ด ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ง€์›ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ.

Docker architecture


Docker v.s. Virtual Machine

Virtual Machine architecture

๊ฐ€์ƒ ๋จธ์‹ ์„ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„.

๊ทธ๋ฆผ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋“ฏ์ด ๊ฐ€์ƒ ๋จธ์‹ ์€ ๋„์ปค์™€ ๋‹ฌ๋ฆฌ Host ์šด์˜์ฒด์ œ ์œ„์— Guest ์šด์˜์ฒด์ œ๋ฅผ ํฌํ•จ.

์ด์— ๋”ฐ๋ผ ๊ฐ€์ƒ ๋จธ์‹ ์€ ๋„์ปค์— ๋น„ํ•ด ๋ฌด๊ฒ๊ณ  ๋А๋ฆผ.

(๋งํฌ์—์„œ ํ˜ธ์ŠคํŠธ ๋Œ€๋น„ ๋„์ปค์˜ ์„ฑ๋Šฅ์„ ํ™•์ธ ๊ฐ€๋Šฅ.)


๋„์ปค์— ๋Œ€ํ•œ ๋ณด๋‹ค ์ƒ์„ธํ•œ ์„ค๋ช…์€ ๋งํฌ๋ฅผ ์ถ”์ฒœ.

๋„์ปค ์„ค์น˜

docker store์— ์ ‘์†ํ•˜์—ฌ ์šด์˜์ฒด์ œ์— ๋งž๋Š” ๋„์ปค๋ฅผ ์„ค์น˜.

์ด์ „์—๋Š” ๋„์ปค ์„ค์น˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋‹ค์šด๋กœ๋“œ ์‹œ ์‚ฌ์ดํŠธ ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ, 2018๋…„ 7์›” 3์ผ ์ฆˆ์Œ๋ถ€ํ„ฐ ์‚ฌ์ดํŠธ ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ž„.

๋งŒ์ผ ๋„์ปค ์‚ฌ์ดํŠธ ๊ณ„์ •์ด ์—†์„ ๊ฒฝ์šฐ ํšŒ์› ๊ฐ€์ž… ํ›„ ์•„๋ž˜์˜ ๊ณผ์ •์„ ์ง„ํ–‰.

(์ฐธ๊ณ ๋กœ ๋„์ปค๋Š” ๋ฌด๋ฃŒ์ธ Community Edition ์™ธ์— ์œ ๋ฃŒ์ธ Enterprise Edition ์—ญ์‹œ ์ง€์›.)

docker store screenshot

Docker Community Edition for Windows ๋‹ค์šด๋กœ๋“œ ์˜ˆ์‹œ.

๋„์ปค ์„ค์น˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ cmd.exe ๋˜๋Š” Powershell์—์„œ docker๋ฅผ ์‹คํ–‰.
(Mac์˜ ๊ฒฝ์šฐ ํ„ฐ๋ฏธ๋„์—์„œ ์œ„์˜ ๋ช…๋ น ์‹คํ–‰.)

docker installation completed

์œ„์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค๋ฉด ์„ค์น˜ ์™„๋ฃŒ.

๋„์ปค ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰

๋„์ปค ์ด๋ฏธ์ง€ vs ๋„์ปค ์ปจํ…Œ์ด๋„ˆ

  • ๋„์ปค ์ด๋ฏธ์ง€
    • ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ €์žฅํ•˜๋Š” ๋ ˆ์ด์–ด์˜ ์ง‘ํ•ฉ
    • ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š”, ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํŒจํ‚ค์ง€5
  • ๋„์ปค ์ปจํ…Œ์ด๋„ˆ
    • ์ด๋ฏธ์ง€์˜ ์ธ์Šคํ„ด์Šค6

  • Ubuntu

์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ๋ช…๋ น์–ด๋Š” ์•„๋ž˜๋ฅผ ์ฐธ๊ณ .

docker run -i -t -v /drive/local-directory/:/container-directory -p host-port-num:docker-port-num --link container-name:alias --name ubuntu-container-name ubuntu:tag

docker run์€ ์ƒˆ๋กœ์šด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด.

์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰์ด ํ•„์š”.6

์ด๋ฏธ์ง€๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ docker pull image:tag ๋ช…๋ น์„ ์‹คํ–‰ํ•ด์•ผ ํ•˜์ง€๋งŒ, docker run ๋ช…๋ น์„ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ์ด๋ฏธ์ง€๊ฐ€ ์—†์œผ๋ฉด ์ž๋™์œผ๋กœ docker pull๋ช…๋ น์„ ์‹ค์‹œ.[7]
(tag๋Š” ๋ฒ„์ „์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ํŽธ๋ฆฌ. ์ตœ์‹  ๋ฒ„์ „์„ ๋ฐ›๊ณ  ์‹ถ๋‹ค๋ฉด, image:latest๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉ.)

๋ช…๋ น์— ์‚ฌ์šฉํ•œ ์˜ต์…˜์€ ์•„๋ž˜์˜ ํ‘œ๋ฅผ ์ฐธ๊ณ .

์˜ต์…˜ ์„ค๋ช…
--name ์ปจํ…Œ์ด๋„ˆ์— ์ด๋ฆ„์„ ๋ถ€์—ฌ
-e ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ • (๊ฐ ์ปจํ…Œ์ด๋„ˆ ๋ณ„๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” ๋„์ปค ํ—ˆ๋ธŒ๋ฅผ ํ™•์ธ)
-d ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
-i -t ์˜ต์…˜๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ์— ์–ดํƒœ์น˜ (attach)๋˜์ง€ ์•Š์„ ๋•Œ์—๋„ STDIN (Standard Input, ํ‘œ์ค€ ์ž…๋ ฅ) ์œ ์ง€
-t -i ์˜ต์…˜๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ณ  Bash๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด pseudo-TTY(ํ„ฐ๋ฏธ๋„ ์—๋ฎฌ๋ ˆ์ดํ„ฐ8) ์ง€์›
-v ํ˜ธ์ŠคํŠธ์˜ ๋ณผ๋ฅจ์„ ์ปจํ…Œ์ด๋„ˆ์— ๋งˆ์šดํŠธ (mount)
-p ๋„์ปค์˜ ํฌํŠธ๋ฅผ ํ˜ธ์ŠคํŠธ์˜ ํฌํŠธ์— ํผ๋ธ”๋ฆฌ์‹œ (publish)
--link ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ์— ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์—ฐ๊ฒฐ

๋„์ปค ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ์„ ํ™•์ธํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ docker ps -a๋ช…๋ น์–ด๋ฅผ cmd.exe ๋˜๋Š” Powershell์—์„œ ์‹คํ–‰.

-a์˜ต์…˜์„ ์ƒ๋žตํ•˜๋Š” ๊ฒฝ์šฐ ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋งŒ์„ ํ‘œ์‹œํ•ด์คŒ.


์ดํ•˜ ์ถœ์ฒ˜

Linux Docker vs Windows Docker

์œ„์˜ ๊ทธ๋ฆผ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋“ฏ์ด, ์œˆ๋„์šฐ ์œ„์—์„œ๋Š” ๋ฆฌ๋ˆ…์Šค์—์„œ์™€ ๋‹ฌ๋ฆฌ ๋ฆฌ๋ˆ…์Šค ๊ฐ€์ƒ ๋จธ์‹  (Hyper-V๋ผ๋Š” ์œˆ๋„์šฐ ๋„ค์ดํ‹ฐ๋ธŒ (native) ํ•˜์ดํผ๋ฐ”์ด์ € ์ด์šฉ) ์œ„์— ๋„์ปค ์—”์ง„์ด ๋™์ž‘.

๊ทธ ์ด์œ ๋Š” ๋„์ปค๊ฐ€ ๋ฆฌ๋ˆ…์Šค ์ปจํ…Œ์ด๋„ˆ (Linux Container, LXC)๋ผ๋Š” ์šด์˜์ฒด์ œ ์ˆ˜์ค€์˜ ๊ฐ€์ƒํ™” ๊ธฐ์ˆ ์„ ์ด์šฉํ•ด, ๋ฆฌ๋ˆ…์Šค ์™ธ์˜ ์šด์˜์ฒด์ œ์—์„œ๋Š” ๋ฆฌ๋ˆ…์Šค ๊ฐ€์ƒ ๋จธ์‹ ์„ ํ•„์š”๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ.


์šฐ๋ถ„ํˆฌ ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ์„ฑ์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด, docker start container-name๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰.

(--link ์˜ต์…˜์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์ปจํ…Œ์ด๋„ˆ๋ถ€ํ„ฐ ์‹คํ–‰ํ•ด์•ผ ํ•จ. docker-compose๋ฅผ ์ด์šฉํ•˜๋ฉด ์ด๋ฅผ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ.)

์šฐ๋ถ„ํˆฌ ์ปจํ…Œ์ด๋„ˆ๋Š” -it ์˜ต์…˜์„ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— docker attach container-name ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ์šฐ๋ถ„ํˆฌ ์ปจํ…Œ์ด๋„ˆ์˜ Bash ์…ธ์„ ์ด์šฉ ๊ฐ€๋Šฅ.

Docker Kitematic

Docker Kitematic์„ ์ด์šฉํ•˜๋ฉด GUI ์ƒ์œผ๋กœ ๋„์ปค๋ฅผ ์ œ์–ด ๊ฐ€๋Šฅ.

CLI ํ™˜๊ฒฝ์ด ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค๋ฉด Docker Kitematic์˜ ์ด์šฉ์„ ์ถ”์ฒœ.

์„ค์น˜ ๋ฐฉ๋ฒ•

๋„์ปค ์•„์ด์ฝ˜์„ ์šฐํด๋ฆญ ํ•ด Kitematic์„ ํด๋ฆญํ•œ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚จ. ์ขŒ์ธก์— Download๋ฅผ ํด๋ฆญํ•ด ์„ค์น˜.

Download Docker Kitematic

๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ZIP ํŒŒ์ผ์ด ๋‹ค์šด๋กœ๋“œ๋จ. ์•Œ์ง‘ ๋“ฑ์˜ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ZIP ํŒŒ์ผ์˜ ์••์ถ•์„ ํ•ด์ œ.

์•Œ์ง‘ ํ•ด์ œ ํ›„ ์•„๋ž˜์˜ ๊ทธ๋ฆผ์˜ ํŒŒ์ผ์„ ํด๋ฆญํ•˜๋ฉด, Docker Kitematic์ด ์‹คํ–‰.
Docker Kitematic์—์„œ CLI์™€ ๋™์ผํ•˜๊ฒŒ docker pull๋ถ€ํ„ฐ docker run์˜ --link ๋“ฑ์˜ ์˜ต์…˜๋„ ์ด์šฉ ๊ฐ€๋Šฅ.

Docker Kitematic