๐ŸณDocker ๋‹ค๋ฃจ๊ธฐ6: Dockerfile

Aprilยท2022๋…„ 11์›” 3์ผ
0

๐ŸŒฑserver

๋ชฉ๋ก ๋ณด๊ธฐ
14/18

Dockerfile ์ด๋ž€?

  • docker image๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ
  • Dockerfile ๋ฌธ๋ฒ•์œผ๋กœ ์ด๋ฏธ์ง€ ์ƒ์„ฑ์„ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ
  • ๋‚˜๋งŒ์˜ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด์„œ๋„ ๋งŽ์ด ํ™œ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ!

Dockerfile ๊ธฐ๋ณธ ๋ฌธ๋ฒ•

  • Dockerfile์€ ํ…์ŠคํŠธ ํŒŒ์ผ ํ˜•์‹
  • Dockerfile ๊ธฐ๋ณธ ๋ฌธ๋ฒ•
    • ๋ช…๋ น๊ณผ ์ธ์ž๋กœ ์ด๋ฃจ์–ด์ง
    • ๋ช…๋ น์€ ํ†ต์ƒ์ ์œผ๋กœ ๋Œ€๋ฌธ์ž๋กœ ์ž‘์„ฑํ•จ

๋ช…๋ น์„ค๋ช…
FROM๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ์ง€์ • ๋ช…๋ น (์˜ˆ: FROM httpd:alpine)
LABEL๋ฒ„์ „ ์ •๋ณด, ์ž‘์„ฑ์ž์™€ ๊ฐ™์€ ์ด๋ฏธ์ง€ ์„ค๋ช…์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น (์˜ˆ: LABEL version="1.0.0")
CMDdocker ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘ํ•  ๋•Œ, ์‹คํ–‰ํ•˜๋Š” ์‰˜ ๋ช…๋ น์„ ์ง€์ •ํ•˜๋Š” ๋ช…๋ น.
RUN๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ, RUN์€ ์ด๋ฏธ์ง€ ์ž‘์„ฑ์‹œ ์‹คํ–‰ํ•˜๋Š” ๋ช…๋ น์ด๊ณ , CMD๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ์‹คํ–‰ํ•˜๋Š” ๋ช…๋ น ์ง€์ • ๋ช…๋ น.
Dockerfile์— CMD๋Š” ํ•œ ๋ฒˆ๋งŒ ์ž‘์„ฑ! (์˜ˆ: CMD [ "yarn", "start" ])
RUN์€์‰˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” ๋ช…๋ น (์˜ˆ: RUN [ "apt-get", "install", "nginx" ])
ENTRYPOINTdocker ์ปจ๋ฐ์ดํ„ฐ๊ฐ€ ์‹œ์ž‘ํ•  ๋•Œ, ์‹คํ–‰ํ•˜๋Š” ์‰˜ ๋ช…๋ น์„ ์ง€์ •ํ•˜๋Š” ๋ช…๋ น.
CMD๋ช…๋ น์— ๋ฎ์–ด์”Œ์›Œ์ง€์ง€ ์•Š๊ณ , **๋ฐ˜๋“œ์‹œ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋ช…๋ น์„ ๊ธฐ์ž…ํ•  ๋•Œ ์‚ฌ์šฉ
EXPOSEdocker ์ปจ๋ฐ์ดํ„ฐ ์™ธ๋ถ€์— ์˜คํ”ˆํ•  ํฌํŠธ ์„ค์ • (์˜ˆ: EXPOSE 8080)
ENVdocker ์ปจ๋ฐ์ดํ„ฐ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•  ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ง€์ • (์˜ˆ: ENV PATH /usr/bin:$PATH)
WORKDIRdocker ์ปจ๋ฐ์ดํ„ฐ์—์„œ์˜ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ์„ค์ • (์˜ˆ: WORKDIR /app)
COPYํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ docker ์ปจ๋ฐ์ดํ„ฐ์— ๋ณต์‚ฌ. ADD์™€ ๋‹ฌ๋ฆฌ URL์€ ์ง€์ •ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ์••์ถ•ํŒŒ์ผ์„ ์ž๋™์œผ๋กœ ํ’€์–ด์ฃผ์ง„ ์•Š์Œ (์˜ˆ: COPY test.sh /root/test.sh)

์ฐธ๊ณ ๋กœ ์•Œ์•„๋‘๋ฉด ์ข‹์€ ๋ช…๋ น์–ด

๋ช…๋ น์„ค๋ช…
ADDCOPY์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, COPY ๋ช…๋ น์ด ๋ณด๋‹ค ๋ช…์‹œ์ ์ด๋ฏ€๋กœ, COPY์„ ์‚ฌ์šฉ.. (์˜ˆ: ADD test.sh /root/test.sh)
SHELL์‰˜ ํ”„๋กœ๊ทธ๋žจ ์ง€์ • ๋ช…๋ น์ด์ง€๋งŒ, CMD๋“ฑ์œผ๋กœ ๋Œ€์ฒด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์ฐธ๊ณ ๋กœ๋งŒ ์•Œ์•„๋‘๊ธฐ.. (์˜ˆ: SHELL ['bin/bash','-c'])
ARGdockerfile ๋‚ด์—์„œ ํ•„์š”ํ•œ ๋ณ€์ˆ˜ ์„ค์ •. (์˜ˆ: ARG env=dev)
USERdocker ์ด๋ฏธ์ง€ ๋ฐ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ž‘์—…์„ ํ•˜๋Š” ์‚ฌ์šฉ์ž ID๋ฅผ ์ง€์ •ํ•จ (์˜ˆ: USER april)
ONBUILD์ƒ์„ฑํ•œ ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ, ์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€ ์ƒ์„ฑ์‹œ ์‹คํ–‰ํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์ง€์ • (์˜ˆ: ONBUILD ADD myweb.tar/var/www/html)

Dockerfile ์ž‘์„ฑํ•ด๋ณด๊ธฐ

// ํ™ˆ ํด๋”๋กœ ์ด๋™
cd ~

// Dockerfile ์ž‘์„ฑํ•˜๊ธฐ. ์—๋””ํ„ฐ ์—ด๊ธฐ
vi Dockerfile

// . ํ˜„์žฌ ํด๋”๋ฅผ ์˜๋ฏธ
// --tag ์˜ต์…˜์€ ์ด๋ฆ„์„ ์ง€์ •
docker build --tag myimage .
  • ๋ณ„๋„์˜ ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ latest๋กœ ์ž๋™์œผ๋กœ ์ƒ์„ฑ

// ํƒœ๊ทธ ์ง€์ •ํ•ด์„œ ์ƒ์„ฑํ•ด๋ณด๊ธฐ
docker build --tag myimage:1.1 .

// docker ํฌํŠธ ์ง€์ •ํ•ด์„œ ์‹คํ–‰
docker run -d -p 9999:80 --name httpdweb myweb

// log ํ™•์ธํ•ด๋ณด๊ธฐ
docker logs httpdweb

// ์ปจํ…Œ์ด๋„ˆ ์ฆ‰์‹œ ์ค‘์ง€
docker kill ์ปจํ…Œ์ด๋„ˆID ๋˜๋Š” ์ด๋ฆ„

docker inspect ๋‚ด๋ถ€ ํ™•์ธํ•˜๊ธฐ

// ์ปจํ…Œ์ด๋„ˆ ๋˜๋Š” ์ด๋ฏธ์ง€ ๋‚ด๋ถ€ ํ™•์ธํ•˜๊ธฐ
docker inspect apacheweb


Dockerfile ์ž‘์„ฑํ•ด์„œ ๋„์›Œ๋ณด๊ธฐ

httpd:alpine์„ ๋ฒ ์ด์Šค๋กœ ํ•ด์„œ,

// Dockerfile๋กœ image ์ƒ์„ฑ
docker build --tag myweb .

// docker ํฌํŠธ ์ง€์ •ํ•ด์„œ ์‹คํ–‰
docker run -d -p 9999:80 --name httpdweb myweb

// log ํ™•์ธํ•ด๋ณด๊ธฐ
docker logs httpdweb

// ์ปจํ…Œ์ด๋„ˆ ์ฆ‰์‹œ ์ค‘์ง€
docker kill ์ปจํ…Œ์ด๋„ˆID ๋˜๋Š” ์ด๋ฆ„



profile
๐Ÿš€ ๋‚ด๊ฐ€ ๋ณด๋ ค๊ณ  ์“ฐ๋Š” ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ

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