๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
DevOps/Docker

[Docker] ๋„์ปค ์ด๋ฏธ์ง€ ๋งŒ๋“ค๊ธฐ1

by ํƒœ์˜น 2022. 1. 20.

๐Ÿ‘‡ ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ์•„๋ž˜์˜ ๊ฐ•์˜๋ฅผ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๊ธฐ๋กํ•˜์˜€์Šต๋‹ˆ๋‹ค.

https://www.inflearn.com/course/%EB%8F%84%EC%BB%A4-%EC%9E%85%EB%AC%B8/dashboard

 

์ดˆ๋ณด๋ฅผ ์œ„ํ•œ ๋„์ปค ์•ˆ๋‚ด์„œ - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

๋„์ปค๋ฅผ 1๋„ ๋ชจ๋ฅด๋Š” ์ž…๋ฌธ์ž, ์ดˆ๋ณด์ž๋ถ„๋“ค์„ ์œ„ํ•œ ๋„์ปค ์•ˆ๋‚ด์„œ ์ž…๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ๋‚ด์šฉ์„ ์ œ์™ธํ•˜๊ณ  ๋„์ปค๊ฐ€ ์™œ ์ธ๊ธฐ๊ฐ€ ๋งŽ๊ณ  ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋น ๋ฅด๊ฒŒ ์ตํž ์ˆ˜ ์žˆ๋„๋ก ์ง‘์ค‘ํ•˜์˜€์Šต๋‹ˆ๋‹ค., ๋ฐ๋ธŒ์˜ต์Šค ์ž…๋ฌธ

www.inflearn.com


 

์ด์ „ ์‹ค์Šต์—์„œ๋Š” ๊ธฐ์กด์— ์กด์žฌํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋ฐ›์•„์„œ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ด๋ณด์•˜์—ˆ๋Š”๋ฐ, ์ด๋ฒˆ ์‹ค์Šต์—์„œ๋Š” ์ง์ ‘ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ด๋ณผ ๊ฒƒ์ด๋‹ค.

 

์ด๋ฏธ์ง€๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋Š” ํŒŒ์ผ๋“ค์˜ ์ง‘ํ•ฉ์ด๋‹ค.

= ํ”„๋กœ์„ธ์Šค ์‹คํ–‰์œผ๋กœ ํŒŒ์ผ์ด ์ƒ์„ฑ/์‚ญ์ œ๋˜๋Š” ๊ฒƒ -> ์ด๋ฏธ์ง€์— ์ฐจ๊ณก์ฐจ๊ณก ์Œ“์ž„ -> ์ด๋ฏธ์ง€ ์•ˆ์— ๋‚ด์šฉ์ด ์ถ”๊ฐ€๋˜๋ฉด์„œ ๋˜ ๋‹ค๋ฅธ ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. (๋„์ปค๋Š” ์ƒˆ๋กœ์šด ์ƒํƒœ๋ฅผ ์ด๋ฏธ์ง€๋กœ ์ €์žฅํ•จ)

 

๋ญ” ์†Œ๋ฆฌ์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์œผ๋‹ˆ ์ผ๋‹จ ์‹ค์Šต์„ ํ†ตํ•ด ์ดํ•ดํ•ด๋ณด์ž๐Ÿฅธ

 


๋„์ปค ์ด๋ฏธ์ง€ ์ƒ์„ฑํ•˜๊ธฐ 1 ) commit

 

๋„์ปค ์ด๋ฏธ์ง€๋Š” ์ฝ๊ธฐ ์ „์šฉ(Only Read) ์˜์—ญ / ์“ฐ๊ธฐ ๊ฐ€๋Šฅ(Writable) ์˜์—ญ์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์šฐ๋ถ„ํˆฌ๊ฐ€ ๊ฐ€์žฅ ์ฒ˜์Œ ์ƒํƒœ์˜ base image๋ผ๊ณ  ํ•œ๋‹ค๋ฉด, ์šฐ๋ถ„ํˆฌ์— ์žˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜๋Š” ์—†์ง€๋งŒ ์ถ”๊ฐ€/์ˆ˜์ •/์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด ๋•Œ, roofs์˜์—ญ์ด๋‚˜ base image์˜์—ญ์€ ์ฝ๊ธฐ ์ „์šฉ์ด์ง€๋งŒ ์ด๊ฒƒ์„ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰ํ•ด์„œ intall git์„ ํ•œ ํ›„ ๋‹ค์‹œ commitํ•˜๋ฉด ์ƒˆ๋กœ์šด custom image๋กœ์จ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด ๊ณผ์ •์„ ์‹ค์Šตํ•ด๋ณด๋„๋ก ํ•˜์ž!

 

(1) ubuntu ์ปจํ…Œ์ด๋„ˆ(์ปจํ…Œ์ด๋„ˆ๋ช…์€ git)๋ฅผ ์ƒ์„ฑํ•œ ํ›„ bash์ฐฝ์œผ๋กœ ์ ‘์†

docker run -it --name git ubuntu:latest bash

 

(2) ์šฐ๋ถ„ํˆฌ์— git ์„ค์น˜

๋จผ์ € ๊นƒ์ด ์„ค์น˜๊ฐ€ ๋œ ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•œ๋‹ค.

# git --version

-> bash: git: command not found (base image์—์„œ๋Š” git์ด ์„ค์น˜๋˜์ง€ ์•Š์•˜์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.)

# apt-get update
# apt-get install -y git
# git --version

-> git version 2.25.1 ์ด๋Ÿฐ์‹์œผ๋กœ ์„ค์น˜๋œ ๊นƒ ๋ฒ„์ „์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

(3) ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ด๋ฏธ์ง€๋กœ commit 

์ด ์ž‘์—…์€ bash์ฐฝ ๋ฐ–์—์„œ ์‹คํ–‰ํ•œ๋‹ค. ๋‚˜๋Š” ์ƒˆ๋กœ์šด powershell์ฐฝ์„ ๋„์›Œ์„œ ์ž‘์—…ํ–ˆ๋‹ค.

docker commit git ubuntu:git

ubuntu:git์ด๋ผ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ git์ด๋ผ๋Š” ํƒœ๊ทธ์˜ ์ด๋ฏธ์ง€๋กœ ์ปค๋ฐ‹ํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

 

์ปค๋ฐ‹ ์ „ ์ด๋ฏธ์ง€๋ฅผ ํ™•์ธํ•ด๋ดค์„ ๋•Œ๋Š” ubuntu๋กœ ๋œ ์ด๋ฏธ์ง€๋“ค์˜ ํƒœ๊ทธ๊ฐ€ 20.04๋ž‘ latest๋งŒ ์กด์žฌํ–ˆ๋Š”๋ฐ,

์ปค๋ฐ‹ ํ›„ ์ด๋ฏธ์ง€์—๋Š” ํƒœ๊ทธ๊ฐ€ git์ธ ubuntu์ด๋ฏธ์ง€๊ฐ€ ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

(4) git ์ปค์Šคํ…€ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ง€๊ณ  ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ

์ด๋ฒˆ์—๋Š” ๋ฐฉ๊ธˆ๋งŒ๋“  ubuntu:git ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ง€๊ณ  ์ƒˆ๋กœ์šด ์ปจํ…Œ์ด๋„ˆ git2๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž.

docker run -it --name git2 ubuntu:git bash

์˜ˆ์ƒ๋Œ€๋กœ๋ผ๋ฉด git2 bash์ฐฝ์— git --version๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ, command not found๊ฐ€ ์•„๋‹ˆ๋ผ git version์ด ์ œ๋Œ€๋กœ ๋– ์•ผํ•œ๋‹ค.

๊นƒ์ด ์„ค์น˜๋œ ๋ฒ„์ „์˜ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ง€๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ–ˆ์„ ๋•Œ, ๊นƒ์„ ๋ณ„๋„๋กœ ์„ค์น˜ํ•˜์ง€ ์•Š์•„๋„ ๊นƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 


 

๋„์ปค ์ด๋ฏธ์ง€ ์ƒ์„ฑํ•˜๊ธฐ 2 ) build

 

์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹์— commit์ด๋ž‘ build ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด ๋‘˜์˜ ์ฐจ์ด์ ์€ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.

  • docker commit : ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ˆ˜์ • ์ž‘์—…์„ ๊ฑฐ์นœ ๋’ค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ด๋ฏธ์ง€๋กœ ์ƒ์„ฑ
  • docker build : Dockerfile์„ ์ž‘์„ฑํ•ด์„œ ์„ค์ •๋‚ด์šฉ๋Œ€๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑ

์šฐ๋ฆฌ๊ฐ€ ์œ„์—์„œ ํ–ˆ๋˜ ์ž‘์—…์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ทธ๋Œ€๋กœ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“  ๊ณผ์ •์ด์—ˆ๋‹ค. ๊ทธ๋Ÿผ ์ด๋ฒˆ์—๋Š” ๋„์ปค ์ด๋ฏธ์ง€ ์„ค์ • ํŒŒ์ผ์ธ Dockerfile์„ ์ด์šฉํ•ด์„œ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ด๋ณด์ž

 

(1) Dockerfile ์ž‘์„ฑ

์›ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์—์„œ Dockerfile์„ ๋งŒ๋“ค์–ด ์•„๋ž˜์˜ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•œ๋‹ค.

FROM ubuntu:latest
RUN apt-get update
RUN apt-get install -y git

FROM, RUN ๋“ฑ์˜ ๋ช…๋ น์–ด ์™ธ์—๋„ ์—ฌ๋Ÿฌ ๋ช…๋ น์–ด๊ฐ€ ์žˆ์œผ๋‹ˆ ์•„๋ž˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ !

https://www.daleseo.com/dockerfile/

 

Dockerfile์—์„œ ์ž์ฃผ ์“ฐ์ด๋Š” ๋ช…๋ น์–ด

Engineering Blog by Dale Seo

www.daleseo.com

 

 

(2) build ๋ช…๋ น์–ด๋กœ ๋„์ปค ์ด๋ฏธ์ง€ ์ƒ์„ฑ 

build ๋ช…๋ น์–ด๋กœ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ทœ์น™์œผ๋กœ ๋ช…๋ น์–ด๋ฅผ ์ž‘์„ฑํ•ด์•ผํ•œ๋‹ค.

ํŒŒ์ผ์„ ๋งŒ๋“  ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

docker build -t ubuntu:git-dockerfile .

ubuntu๋ผ๋Š” ์ด๋ฏธ์ง€ ์ด๋ฆ„์— ํƒœ๊ทธ๊ฐ€ git-dockerfile์ธ ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋  ๊ฒƒ์ด๋‹ค.

 

์˜ˆ์ƒ๋Œ€๋กœ!

 

์œ„์—์„œ commit ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ–ˆ์„ ๋•Œ์—๋Š” ์ง์ ‘ ์ปจํ…Œ์ด๋„ˆ์— ์ ‘์†ํ•ด์„œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ–ˆ์–ด์•ผ ํ–ˆ๋Š”๋ฐ, build ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ๋•Œ์—๋Š” dockerfile์— ์›ํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์‹ค์ œ๋กœ ์„œ๋ฒ„์— ๋“ค์–ด๊ฐ€์„œ ํ•ด์•ผํ•˜๋Š” ์ž‘์—…๋“ค์„ ์„ค์ •ํŒŒ์ผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

๋„์ปคํŒŒ์ผ๋กœ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋˜๋ฉด ๊ด€๋ฆฌ์ž ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํŒŒ์ผ์„ ํ™•์ธํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ์œ ์šฉํ•˜๋‹ค.

๋Œ“๊ธ€