๐Ÿณ์™•์ดˆ๋ณด Dockerfile/ Dockerimages ๊ด€๋ จ ๊ฐœ๋… ์ •๋ฆฌ

์œผ๋‹ยท2023๋…„ 4์›” 13์ผ
0

Server ๐Ÿ“ฑ

๋ชฉ๋ก ๋ณด๊ธฐ
1/3

(๋…ธ์…˜์—์„œ ๊ธ€ ์ž‘์„ฑํ•˜๊ณ  ํ‹ฐ์Šคํ† ๋ฆฌ์— ๋ณต๋ถ™ํ•˜๋ฉด ๊นจ์ง€๋Š”๊ฑฐ ์‹œ๋Ÿฌ์„œ ๊ฒฐ๊ตญ ๋‹ค์‹œ ๋ฒจ๋กœ๊ทธ๋กœ,,, ์šฐํžˆํžˆ,,)

๐Ÿณ์Œฉ๊ธฐ์ดˆ ์‹ค์Šตํ™˜๊ฒฝ ๊ตฌ์„ฑํ•˜๊ธฐ

๐Ÿ“‚ ์œˆ๋„์šฐ ํ™˜๊ฒฝ

Windows์—์„œ ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด,ย ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰
ํ•œย CMDย ๋˜๋Š”ย PowerShell์„ ์ด์šฉ

๐Ÿ“‚๊ณต์‹ ์ด๋ฏธ์ง€ ๋‚ด๋ ค๋ฐ›๋Š” ๋ฒ•

# docker pull**[์ด๋ฏธ์ง€ ์ด๋ฆ„]:[์ด๋ฏธ์ง€ ํƒœ๊ทธ(๋ฒ„์ „)]**

# docker pull ubuntu:20.04

๐Ÿ“‚๋„์ปค ํ—ˆ๋ธŒ ๋กœ๊ทธ์ธ

docker login

# ๋กœ๊ทธ์•„์›ƒ์€ ๋ฐ˜๋Œ€๋กœ docker logout
  • ๊ฐ€๋” ์–ด๋–ค ์ด๋ฏธ์ง€๋ฅผ pull ํ•  ๋•Œ , ๋„์ปคํ—ˆ๋ธŒ์— ์ด๋ฏธ์ง€ ์—…๋กœ๋“œํ•  ๋•Œ ๋กœ๊ทธ์ธ ํ•„์š”
  • ๊ณ„์ •์ด ์—†๋‹ค๋ฉดย https://hub.docker.com/ย ๋ฅผ ํ†ตํ•ด ํšŒ์›๊ฐ€์ž…

๐ŸณDockerfile

๐Ÿ“‚Dockerfile์ด๋ž€?

  • DockerImage๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ(์„ค์ •ํŒŒ์ผ)
  • Dockerfile์„ ์ž‘์„ฑํ•œ ํ›„ build ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด DockerImage ์ƒ์„ฑํ•œ๋‹ค.

์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ย ํ…์ŠคํŠธ ํŒŒ์ผ์ด๊ณ  build ์‹œ ์‚ฌ์šฉ๋  ๋ช…๋ น์–ด๋“ค์„ ๋ชจ์•„๋†“์€ ๊ฒƒ

๐Ÿ“‚Dockerfile์„ ๋งŒ๋“œ๋Š” ์ด์œ 

(1) ์ด๋ฏธ์ง€๊ฐ€ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์–ด์กŒ๋Š”์ง€๋ฅผ ๊ธฐ๋กํ•œ๋‹ค.

  • ๊ฐœ๋ฐœ์ž์˜ ๊ฒฝ์šฐ ๋ณดํ†ต ์‚ฌ๋žŒ๋“ค๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ด๋ฏธ์ง€์˜ ๊ตฌ์„ฑ์— ๋Œ€ํ•˜์—ฌ ์•Œ์•„์•ผ ํ•œ๋‹ค. ์–ด๋– ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ด๊ณ  ์žˆ๋Š” ์ด๋ฏธ์ง€๊ฐ€ ์„ค์น˜ ๋˜๊ธฐ ์œ„ํ•œ ๊ณผ์ •, ์ค‘๊ฐ„์— ์–ด๋– ํ•œ ๊ณผ์ •์„ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š”์ง€ ๋“ฑ์„ ์•Œ์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.(Dockerfile์ด ์ž๋™ํ™”๋œ ์Šคํฌ๋ฆฝํŠธ ํ˜•ํƒœ์ด๊ธฐ ๋•Œ๋ฌธ)

(2) ๋ฐฐํฌ์— ์šฉ์ด

  • ์–ด๋– ํ•œ ์ด๋ฏธ์ง€๋ฅผ ๋ฐฐํฌํ•  ๋•Œ, ์ด๋ฏธ์ง€ ํŒŒ์ผ ์ž์ฒด๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ์ธ Dockerfile๋งŒ์„ ๋ฐฐํฌํ•œ๋‹ค๋ฉด ํŽธ๋ฆฌํ•˜๋‹ค. ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ธฐ๋งŒ ํ•˜๋ฉด ์Šค์Šค๋กœ๊ฐ€ ๊ทธ Dockerfile์— ํ•ด๋‹นํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

(3) ์ปจํ…Œ์ด๋„ˆ(์ด๋ฏธ์ง€)๊ฐ€ ํŠน์ • ํ–‰๋™์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•œ๋‹ค.

  • ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด, ํŠน์ • ํ–‰๋™์„ ์ทจํ•˜๋„๋ก ํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ(์ด๋ฏธ์ง€๋ฅผ) ๋งŒ๋“ค์–ด์•ผ ํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค.
  • ์ด๋Š” ์‚ฌ์‹ค ๋ง๋กœ์„œ ์„ค๋ช…ํ•˜๊ธฐ๋Š” ์ข€ ์–ด๋ ต๊ณ , ์‹ค์ œ ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๋ณด๋ฉด '์•„, ์ด๊ฑฐ Dockerfile ์“ฐ๋ฉด ์ข€ ๊ฐ„๋‹จํ•ด ์ง€๊ฒ ๊ตฌ๋‚˜...' ๋ผ๋Š” ์ƒ๊ฐ์ด ๋จธ๋ฆฟ์†์—์„œ ๋ถˆํ˜„๋“ฏ ๋ฒˆ๊ฐœ์ฒ˜๋Ÿผ ์Šค์น ๋•Œ๊ฐ€ ์žˆ๋‹ค.

๐Ÿ“‚Dockerfile ์ž‘์„ฑ

๐Ÿ’ก ํ™•์žฅ์ž๊ฐ€ dockerfile์ด ์•„๋‹ˆ๊ณ  ํŒŒ์ผ์˜ ์ œ๋ชฉโ—โ— ์„ Dockerfile๋กœ ๋งŒ๋“ ๋‹ค (์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑธ๋กœ ์•„๋ฌด๊ฑฐ๋‚˜โ†’ ๋‚˜๋Š” vscode๋กœํ•จ )

๐Ÿ“‚ Dockerfile ๊ธฐ๋ณธ ๋ช…๋ น์–ด

  • FROMย : ์ƒ์„ฑํ•  ์ด๋ฏธ์ง€์˜ ๋ฒ ์ด์Šค๊ฐ€ ๋  ์ด๋ฏธ์ง€
    • ์–ด๋А ์ด๋ฏธ์ง€์—์„œ ์‹œ์ž‘ํ• ๊ฑด์ง€๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋ฐ˜๋“œ์‹œ ํ•œ ๋ฒˆ ์ด์ƒ ์ž…๋ ฅ
  • MAINTAINERย : ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•œ ๊ฐœ๋ฐœ์ž์˜ ์ •๋ณด (1.13.0 ์ดํ›„ ์‚ฌ์šฉ X) ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๊ฑด ์•„๋‹˜.
  • LABELย : ์ด๋ฏธ์ง€์— ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ (key-value ํ˜•ํƒœ)
  • ****COPY, ADD**** : COPY ๋กœ์ปฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ์ฝ์–ด ๋“ค์ธ ์ปจํ…์ŠคํŠธ๋กœ๋ถ€ํ„ฐ ์ด๋ฏธ์ง€์— ํŒŒ์ผ์„ ๋ณต์‚ฌ โ†” ADD ํŒŒ์ผ์— ์ด๋ฏธ์ง€ ์ถ”๊ฐ€ํ•˜๋Š”๋ฐ dockerfile์ด ์œ„์น˜ํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ด. ์™ธ๋ถ€ URL ๋ฐ tar ํŒŒ์ผ์—์„œ๋„ ํŒŒ์ผ์„ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ(๊ถŒ์žฅX)
  • RUNย : ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    • RUN ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ ๋งˆ๋‹ค ์ƒˆ ๋ ˆ์ด์–ด๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ์บ์‹œ๋œ๋‹ค.
    • ๋”ฐ๋ผ์„œ RUN ๋ช…๋ น์„ ๋”ฐ๋กœ ์‹คํ–‰ํ•˜๋ฉด apt-get update๋Š” ๋‹ค์‹œ ์‹คํ–‰๋˜์ง€ ์•Š์•„์„œ ์ตœ์‹  ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์—†๋‹คโ†’ RUN ๋ช…๋ น ํ•˜๋‚˜์— apt-get update์™€ install์„ ํ•จ๊ป˜ ์‹คํ–‰
  • WORKDIRย : ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ๋””๋ ‰ํ„ฐ๋ฆฌ. ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์—†์œผ๋ฉด ์ƒˆ๋กœ ์ƒ์„ฑํ•œ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ์ž‘๋™ํ•œ๋‹ค.
    • ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ง€์ •ํ•˜๋ฉด ๊ทธ ์ดํ›„ ๋ช…๋ น์–ด๋Š” ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.
    • cd ๋ช…๋ น์–ด์™€ ๋™์ผ
  • EXPOSEย : Dockerfile์˜ ๋นŒ๋“œ๋กœ ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€์—์„œ ์—ด์–ด์ค„ ํฌํŠธ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
    • ํ˜ธ์ŠคํŠธ ๋จธ์‹ ๊ณผ ์ปจํ…Œ์ด๋„ˆ์˜ ํฌํŠธ ๋งคํ•‘์‹œ์— ์‚ฌ์šฉ๋œ๋‹ค.
    • ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ์‹œ -p ์˜ต์…˜์˜ ์ปจํ…Œ์ด๋„ˆ ํฌํŠธ ๊ฐ’์œผ๋กœ EXPOSE ๊ฐ’์„ ์ ์–ด์•ผํ•œ๋‹ค.
  • USERย : ์ด๋ฏธ์ง€๋ฅผ ์–ด๋–ค ๊ณ„์ •์—์„œ ์‹คํ–‰ ํ•˜๋Š”์ง€ ์ง€์ •
    • ๊ธฐ๋ณธ์ ์œผ๋กœ root์—์„œ ํ•ด์ค€๋‹ค.
  • COPY / ADDย : build ๋ช…๋ น ์ค‘๊ฐ„์— ํ˜ธ์ŠคํŠธ์˜ ํŒŒ์ผ ๋˜๋Š” ํด๋”๋ฅผ ์ด๋ฏธ์ง€์— ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ
    • ADD ๋ช…๋ น๋ฌธ์€ ์ข€ ๋” ํŒŒ์›Œํ’€ํ•œ COPY ๋ช…๋ น๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ADD ๋ช…๋ น๋ฌธ์€ ์ผ๋ฐ˜ ํŒŒ์ผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์••์ถ• ํŒŒ์ผ์ด๋‚˜ ๋„คํŠธ์›Œํฌ ์ƒ์˜ ํŒŒ์ผ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ด๋ ‡๊ฒŒ ํŠน์ˆ˜ํ•œ ํŒŒ์ผ์„ ๋‹ค๋ฃจ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด COPY ๋ช…๋ น๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋œ๋‹ค.
  • ENVย : ์ด๋ฏธ์ง€์—์„œ ์‚ฌ์šฉํ•  ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ฐ’์„ ์ง€์ •ํ•œ๋‹ค.
    • path ๋“ฑ
  • CMD :
    • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ๋งˆ๋‹ค ์‹คํ–‰ํ•  ๋ช…๋ น์–ด๋ฅผ ์„ค์ •ํ•œ๋‹ค. dockerfile์—์„œ ํ•œ๋ฒˆ๋งŒ! ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋งŒ ์‹คํ–‰๋œ๋‹ค. (docker run)
    • ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ์‹œ, ์ถ”๊ฐ€์ ์ธ ๋ช…๋ น์–ด์— ๋”ฐ๋ผ ์„ค์ •ํ•œ ๋ช…๋ น์–ด๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ†” ENTRYPOINT
    • ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ์ˆ˜ํ–‰ํ•  ๋ช…๋ น์„ ์ง€์ •ํ•œ๋‹ค. (docker start)
    • ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘ ์‹œ, ์ถ”๊ฐ€์ ์ธ ๋ช…๋ น์–ด ์กด์žฌ ์—ฌ๋ถ€์™€ ์ƒ๊ด€ ์—†์ด ๋ฌด์กฐ๊ฑด ์‹คํ–‰๋œ๋‹ค.
    • ์ปค๋งจ๋“œ๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„ ์‚ฌ์šฉํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ์˜ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด CMD์™€์˜ ์ฐจ์ด์ ์ด๋‹ค.
  • ๋ช…๋ น์–ด ํ˜•์‹
    • CMD ["<์ปค๋งจ๋“œ>", "<ํŒŒ๋ผ๋ฏธํ„ฐ1>", "<ํŒŒ๋ผ๋ฏธํ„ฐ2>"]
    • CMD <์ปค๋งจ๋“œ> <ํŒŒ๋ผ๋ฏธํ„ฐ1> <ํŒŒ๋ผ๋ฏธํ„ฐ2>
    • ENTRYPOINT ["<์ปค๋งจ๋“œ>", "<ํŒŒ๋ผ๋ฏธํ„ฐ1>", "<ํŒŒ๋ผ๋ฏธํ„ฐ2>"]
    • ENTRYPOINT <์ปค๋งจ๋“œ> <ํŒŒ๋ผ๋ฏธํ„ฐ1> <ํŒŒ๋ผ๋ฏธํ„ฐ2>

๐ŸณDocker Image

๐Ÿ“‚Docker ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋ฐฉ๋ฒ•

ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๋ช…๋ น์–ด๋กœ ์ˆ˜ํ–‰

  • docker commit
    • docker container๋ฅผย image๋กœ ์ƒ์„ฑ
    • commitย ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์‹œ์ ์˜ docker container ์ƒํƒœ๊ฐ€ ๋ณด์กด
    • ํ˜„์žฌย docker container์˜ ์ƒํƒœ๋ฅผ ๋ฐฑ์—…ํ•˜๋Š” ๊ฒฝ์šฐ์— ์ž์ฃผ ์‚ฌ์šฉ
  • docker build
    • Dockerfileย ์ด๋ผ๋Š” ๋‹จ์ˆœ ํ…์ŠคํŠธ ํŒŒ์ผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌย imageย ์ƒ์„ฑ
    • Dockerfileย ์€ ์ง€์ •๋œ ๋ฌธ๋ฒ•์„ ์ง€์ผœ์•ผ ํ•จ
    • Dockerfileย ์„ ์ž‘์„ฑํ•˜๊ณ  ๊ณต์œ ํ•˜๋ฉด image์˜ ๊ตฌ์„ฑ์„ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Œ

๐Ÿ“‚docker build ๊ณผ์ •

docker buildย ๋ช…๋ น์–ด๋Š”ย docker imageย ๋ฅผ ๋นŒ๋“œํ•  ๋•Œ ๋‹ค์Œ ๋‘ ๊ฐ€์ง€๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • Dockerfile
  • build contextย โ†’ PATHย ๋˜๋Š”ย URLย ์„ ํ†ตํ•ด ์ง€์ •๋œย ๋‹ค์ˆ˜์˜ ํŒŒ์ผ์„ ๊ฐ–๋Š” ๊ฒฝ๋กœ(์œ„์น˜)

PATHย ๋Š” ํ˜„์žฌ ๋กœ์ปฌ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ๋””๋ ‰ํ† ๋ฆฌ, URLย ์€ย Git repositoryย ์˜ ์œ„์น˜

docker build . # . ์ด ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์˜๋ฏธ. build context๋ฅผ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ง€์ •ํ•œ ๊ฒƒ

docker build ์˜ ์‹ค์ œ ์ฒ˜๋ฆฌ๋Š”ย Docker daemonย ์ด ํ•˜๋ฉฐ docker build ์š”์ฒญ์ด ์‹œ์ž‘๋˜๋ฉด ์ œ์ผ ๋จผ์ €ย Docker daemonย ์—๊ฒŒย build contextย ์˜ ํ•˜์œ„ ๋ชจ๋“  ํŒŒ์ผ์— ๋Œ€ํ•œ ์ •๋ณด(contents)๋ฅผ ์ „์†กํ•œ๋‹ค. Docker daemonย ์€ย buildย ๋ช…๋ ์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณผ์ •์—์„œDockerfileย ์„ ์‚ฌ์šฉํ•˜๋ฉฐ ์•ˆ์— ๊ธฐ์žฌ๋œ ๋ช…๋ น์–ด๋“ค์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์‹คํ–‰ํ•œ๋‹ค.

์ด๋Ÿฐ ์ ์„ ๊ณ ๋ คํ•˜์—ฌ docker build ๋ช…๋ น์–ด๋Š”ย /(๋ฃจํŠธ ๊ฒฝ๋กœ)ย ๊ฐ™์€ ๊ณณ์—์„œ ์“ฐ๋ฉด ์•ˆ ๋œ๋‹ค.

๋Œ€์‹  ํ•˜๋‚˜์˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๊ณ , ๊ทธ ์•ˆ์—ย Dockerfile์„ ๋‘๊ณ ,build ์‹œ์— ํ•„์š”ํ•œ ์ถ”๊ฐ€์ ์ธ ํŒŒ์ผ๋“ค์„ ๋„ฃ์–ด๋‘” ํ›„์— ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ์—์„œย docker build๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค.

build context ๋‚ด์—์„œ build ์— ์‚ฌ์šฉํ•˜์ง€ ๋ง์•˜์œผ๋ฉด ํ•˜๋Š” ๋ชฉ๋ก์€ ย .dockerignoreย ํŒŒ์ผ์— ๊ธฐ์žฌํ•œ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ Dockerfile ์€ย build context์˜ย rootย ๊ฒฝ๋กœ์— ๋„ฃ๋Š”๋‹ค.

๋‹ค๋ฅธ ๊ฒฝ๋กœ์— ์žˆ๋Š” Dockerfile์„ ์“ฐ๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ํ•˜๋ฉด ๋œ๋‹ค.

docker build -f /path/to/a/Dockerfile .

์ตœ์ข…์ ์œผ๋กœย buildย ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์ตœ์ข… ์™„์„ฑ ์ด๋ฏธ์ง€์˜ ID๋ฅผ ์ถœ๋ ฅํ•˜๊ณ ,Docker daemonย ์—์„œ ์‚ฌ์šฉ๋œย contextย ์˜ ๋ชจ๋“  ์ •๋ณด๋“ค์€ย clean upย ๋œ๋‹ค.

๐Ÿ“‚Docker ๊ธฐ๋ณธ ๋ช…๋ น์–ด๋“ค

docker build -t (image ์ด๋ฆ„):(๋ฒ„์ „์ด๋ฆ„) . ๋„์ปคํŒŒ์ผ ๋นŒ๋“œํ•˜๊ธฐ โ†’ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ๋„์ปคํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋นŒ๋“œ. ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•  ๋•Œ๋Š” -f ์‚ฌ์šฉ

docker login ๋„์ปคํ—ˆ๋ธŒ ๋กœ๊ทธ์ธ

docker image ls docker images ํ˜„์žฌ ์—…๋กœ๋“œ๋œ ์ด๋ฏธ์ง€ ํ™•์ธ

docker run (์˜ต์…˜) (์ด๋ฏธ์ง€์ด๋ฆ„):(๋ฒ„์ „์ด๋ฆ„) ๋‹ค์šด๋ฐ›์€ ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•œ ํ˜•ํƒœ์ธ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋งŒ๋“œ๋Š” ๋ช…๋ น์–ด ์ปจํ…Œ์ด๋„ˆ๋Š” ์‹คํ–‰์ค‘์ธ ๋„์ปคํŒŒ์ผ์„ ๋งํ•จ

์˜ต์…˜

-i (interactive) : ์‚ฌ์šฉ์ž๊ฐ€ ์ž…์ถœ๋ ฅ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋กœ ํ•œ๋‹ค

-t : ๊ฐ€์ƒ ํ„ฐ๋ฏธ๋„ ํ™˜๊ฒฝ์„ ์—๋ฎฌ๋ ˆ์ด์…˜ ํ•˜๊ฒ ๋‹ค๋Š” ๋ง Bash ์‚ฌ์šฉํ•  ๋•Œ ํ•„์š” ์ด ์˜ต์…˜ ์„ค์ •ํ•ด์•ผ ์…€์ด ํ‘œ์‹œ๋จ.

-d(detach) : background๋กœ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ (์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ผ๋ฐ˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•„๋‹Œ ๋ฐ๋ชฌํ”„๋กœ์„ธ์Šค ํ˜•ํƒœ๋กœ ์‹คํ–‰ํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋๋‚˜๋„ ์œ ์ง€๋˜๋„๋ก)

--name : ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„ ์„ค์ •

-p : ํ˜ธ์ŠคํŠธ์™€ ์ปจํ…Œ์ด๋„ˆ์˜ ํฌํŠธ ์—ฐ๊ฒฐ <ํ˜ธ์ŠคํŠธํฌํŠธ>:<์ปจํ…Œ์ด๋„ˆ ํฌํŠธ>

ex) docker run --name mypyserver -d -p 8090:9000 mypython:1.0

๐Ÿ’ก ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ–ˆ๋Š”๋ฐ ๋ฐ”๋กœ ์ข…๋ฃŒ๋œ๋‹คโ“โ“docker๋Š” image๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๋ฌผ๋งŒ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์—!! ๊ณ„์† ์‹คํ–‰์‹œํ‚ค๊ณ  ์‹ถ์œผ๋ฉด bin/bash๊ฐ™์€๊ฑฐ ์ด์šฉํ•ด์•ผํ•จ !!

docker ps #์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ๋ณด๊ธฐ docker container ls๋ž‘ ๊ฐ™์Œ.

docker ps -a #์‹คํ–‰์ค‘์ด์ง€ ์•Š์€ ์ปจํ…Œ์ด๋„ˆ๋„ ๋ณด์—ฌ์คŒ. ๋„์ปค ์ด๋ฏธ์ง€ ํŒŒ์ผ ์ด๋ฆ„ ๋ณด๊ธฐ NAMES๋ฅผ ๋ณด๋ฉด๋จ.

docker image push <image tag> myname/myimage:<image tag> #์ด๋ฏธ์ง€ ์—…๋กœ๋“œ

profile
์•„์ด์ฟ 

0๊ฐœ์˜ ๋Œ“๊ธ€