๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿณ Docker

๐Ÿณ Docker * ์‹œ์ž‘ ์ „ ๋„์  ๋„์ ..

 

| Docker Documentation

Docker run reference Docker runs processes in isolated containers. A container is a process which runs on a host. The host may be local or remote. When an operator executes...

docs.docker.com

๋„์ปค์™€ ๊ฐ€์ƒ๋จธ์‹ ์˜ ์ฐจ์ด์ 


  1. ๋„์ปค
    ํ˜ธ์ŠคํŠธ์œ„์— ๋„์ปค(๊ฐ€์ƒ ํ•˜๋“œ์›จ์–ด + ์ปค๋„ ์—ญํ• ์„ ๋‹ด๋‹น)์— ์ปจํ…Œ์ด๋„ˆ๋“ค์„ ์—ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ˜•ํƒœ๋กœ ๋„์šด๋‹ค.
    ๋”ฐ๋ผ์„œ, ๊ฐ ์ปจํ…Œ์ด๋„ˆ๋“ค์ด ๋„์ปค์˜ ๊ฐ€์ƒ ํ•˜๋“œ์›จ์–ด + ์ปค๋„์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

  2. ๊ฐ€์ƒ๋จธ์‹ 
    ํ˜ธ์ŠคํŠธ ์œ„์— ๊ฐ€์ƒ๋จธ์‹ ์— ๊ฐ€์ƒ๊ณต๊ฐ„(๊ฐ€์ƒํ•˜๋“œ์›จ์–ด + ์ปค๋„)์„ ๊ฐ ๊ฐ ์ƒ์„ฑํ•œ๋‹ค.
    ๋”ฐ๋ผ์„œ, ๊ฐ ๊ฐ€์ƒ๊ณต๊ฐ„๋“ค์ด ์„œ๋กœ์˜ ๊ฐ€์ƒ ํ•˜๋“œ์›จ์–ด + ์ปค๋„์„ ๊ณต์œ ํ•  ์ˆ˜ ์—†๋‹ค.

์ฐธ๊ณ  ์‚ฌ์ดํŠธ


  1. openBook_๊ฐ€์žฅ ๋นจ๋ฆฌ ๋งŒ๋‚˜๋Š” Docker
    ๋„์ปค๋ฅผ ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์ฝ์œผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์€ ์ฑ…์ด๋‹ค. ์ธํ„ฐ๋„ท์—์„œ๋Š” ๋ฌด๋ฃŒ๋กœ ๋ณผ ์ˆ˜ ์žˆ๊ณ  ์ „์ž/์ข…์ด ์ฑ… ๋ชจ๋‘ ํŒ๋งค์ค‘์ด๋‹ค. ๋ฌด๋‹จ๋ฐฐํฌ ๋ฐ ๋‚ด์šฉ ์ •๋ฆฌ ํ•ด์„œ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ๋„ ์•ˆ ๋œ๋‹ค๊ณ  ํ•œ๋‹ค OTZ..

  2. Docker ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•
    ์œ„์˜ ์ €์ž๊ฐ€ ์ ์–ด๋†“์€ ์‚ฌ์ดํŠธ ์ด๋‹ค. ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋‹ค.

  3. DockerDocument_writeinKorea
    ํ•œ๊ธ€๋กœ ๋˜์–ด์žˆ๋Š” docker ์‚ฌ์šฉ๋ฒ• ๋ฐ ์†Œ๊ฐœ๋“ฑ ํ™ˆํŽ˜์ด์ง€๋“ค์˜ ์ฃผ์†Œ๋ฅผ ๋‚˜์—ดํ•ด ๋†“์€ ๊ณณ์ธ๋ฐ ๋ช‡๊ฐœ ๋ˆŒ๋Ÿฌ๋ณด๋‹ˆ ํ™ˆํŽ˜์ด์ง€๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ ํ™ˆํŽ˜์ด์ง€ ์—ฐ๊ฒฐ์ด ์•„์˜ˆ ์•ˆ ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์—ˆ๋‹ค.

  4. ์ดˆ๋ณด๋ฅผ ์œ„ํ•œ ํ† ์ปค์•ˆ๋‚ด์„œ
    ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๋Š” ๋ถ„์ด ์ •๋ฆฌํ•ด ๋†“์€ ๊ฒƒ์ธ๋ฐ ๊น”๋”ํ•˜๋‹ˆ ๋ณผ ๊ฒƒ์ด ๋งŽ๋‹ค.

๋‹ค์Œ์€ ๋‚ด๊ฐ€ ๋™์˜์ƒ ๊ฐ•์˜๋ฅผ ๋ณด๊ณ  ์ •๋ฆฌํ•œ ๋‚ด์šฉ


๊ฐ„๋‹จํ•˜๊ฒŒ ๋“ค์—ˆ๋˜ ๊ฒƒ์„ ์ •๋ฆฌํ•ด ๋ณด๊ณ ์ž ํ•œ๋‹ค.

 

1. [ํ† ๊ทธON์„ธ๋ฏธ๋‚˜] ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ๊ฐ€์ƒํ™” ํ”Œ๋žซํผ '๋„์ปค(Docker)'์˜ ์ดํ•ด 2๊ฐ•


sudo docker run [OPTIONS]

--rm: container delete when the container shut down.
-e: environment forwarding, local to container.
-p: port forwarding, local to container.


40:30 - ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์˜ ๋„คํŠธ์›Œํฌ ์ƒ์„ฑ

sudo docker network create [OPTIONS] NETWORK

์ปจํ…Œ์ด๋„ˆ ๋ผ๋ฆฌ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ค€๋‹ค. ์ด ์ž‘์„ ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ณ„์† local๋ฅผ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค.
๋„คํŠธ์›Œํฌ๋ฅผ ๊ฐ™์€ ๊ณณ์œผ๋กœ ์„ค์ •ํ•ด์ฃผ๋ฉด, ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„๋งŒ ๊ฐ€์ง€๊ณ  ์ปจํ…Œ์ด๋„ˆ ๋ผ๋ฆฌ ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

sudo docker network connect [OPTIONS] NETWORK CONTAINER

๊ธฐ์กด์— ์ƒ์„ฑ๋œ ์ปจํ…Œ์ด๋„ˆ์— ๋„คํŠธ์›Œํฌ๋ฅผ ์ถ”๊ฐ€ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

44:30 - docker-compose.yml ์„ค์ •ํŒŒ์ผ๋กœ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ
yml ํŒŒ์ผ์— ์„ค์ •์„ ์ €์žฅํ•˜๊ณ  sudo docker-compose up ๋ช…๋ น์„ ์‹คํ–‰ํ•œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” docker-compose.yml ์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์„ค์ •ํŒŒ์ผ์„ ์ง€์ • ํ•ด์•ผ ํ•˜์ง€๋งŒ, sudo docker-compose -f ํŒŒ์ผ์ด๋ฆ„.yml upํ•˜๋ฉด ํ•ด๋‹น ํŒŒ์ผ์ด๋ฆ„์œผ๋กœ ๋œ ์„ค์ •ํŒŒ์ผ์„ ์‹คํ–‰ํ•œ๋‹ค.

48:14 - ๋ณผ๋ฅจ ๋งˆ์šดํŠธ
save data from container to local host ์ผ์ข…์˜ back up ์ž‘์—… ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค. ๋ณผ๋ฅจ ๋งˆ์šดํŠธ๋ฅผ ์•ˆ ํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ฃฝ์—ˆ์„ ๋•Œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง„๋‹ค. ๊ทธ๋ž˜์„œ ๋ฐ˜๋“œ์‹œ ์ €์žฅ์ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋“ค์€ ๋กœ์ปฌ ๋งˆ์šดํŠธ๋ฅผ ํ•ด ๋‘์–ด์•ผ ํ•œ๋‹ค. = ๋‚˜์ค‘์— ๋‹ค์‹œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋„์›Œ๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์‹ค๋˜๋Š” ๊ฒƒ์„ ๋ง‰์•„์ค€๋‹ค.

 

2. [ํ† ํฌON์„ธ๋ฏธ๋‚˜] ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ๊ฐ€์ƒํ™” ํ”Œ๋žซํผ '๋„์ปค'(Docker')์˜ ์ดํ•ด 3๊ฐ•

 

์ด๋ฏธ์ง€ ๋งŒ๋“ค๊ณ  ๋ฐฐํฌํ•˜๊ธฐ

  • ํŠน์ • ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํ™˜๊ฒฝ
  • ๊ณ„์ธตํ™” ๋œ ํŒŒ์ผ ์‹œ์Šคํ…œ
  • ํŒŒ์ผ๋“ค์˜ ์ง‘ํ•ฉ
  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋Š” ํ™˜๊ฒฝ๋„ ๊ฒฐ๊ตญ ํŒŒ์ผ๋“ค์˜ ์ง‘ํ•ฉ

09:00 - ์ปจํ…Œ์ด๋„ˆ์˜ ๋ณ€๊ฒฝ ์ƒํ™ฉ ์ฒดํฌํ•˜๊ธฐ

sudo docker diff CONTAINER

์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ ๋ณ€๊ฒฝ๋œ ์ƒํ™ฉ๋“ค์ด ์ถœ๋ ฅ ๋œ๋‹ค.

11:00 - ๋ช…๋ น์ฐจ์—์„œ ์ด๋ฏธ์ง€ ๋งŒ๋“ค๊ธฐ = ์ˆ˜์ •ํ•œ ์ปจํ…Œ์ด๋„ˆ ์ €์žฅํ•˜๊ธฐ

sudo docker commit CONTAINER NEW_IMAGE_NAME:TAG

์ƒ์„ฑ ๋œ ์ด๋ฏธ์ง€๋Š” sudo docker images | grep TAG_NAMEํ•˜๋ฉด ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

16:19 - docker file ๋งŒ๋“ค์–ด์„œ ์ด๋ฏธ์ง€ ๋งŒ๋“ค๊ธฐ
DockerFile: ์ด๋ฏธ ์ƒ์„ฑ ๊ณผ์ •์„ ๊ธฐ์ˆ ํ•œ docker ์ „์šฉ dsl

FROM ๊ธฐ์ดˆ๊ฐ€๋˜๋Š”์ด๋ฏธ์ง€
RUN ์‹คํ–‰๋ ๋ช…๋ น

๋งŒ์•ฝ ์„ค์น˜๋ช…๋ น์„ ์‹คํ–‰ํ•  ๊ฒƒ ์ด๋ผ๋ฉด ์˜ต์…˜ -y๋ฅผ ๊ผญ ๋ถ™์—ฌ์ค˜์•ผ ํ•œ๋‹ค.

RUN apt-get installl -y ์„ค์น˜ํ• ๊ฒƒ

์˜ต์…˜๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์‹œ์—๋Š” ์„ค๋ฌธ์—(์„ค์น˜ํ•  ๋•Œ ์–ผ๋งŒํผ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๋Š”๋ฐ ์„ค์น˜ํ•˜๊ฒ ๋ƒ ์•ˆ ํ•˜๊ฒ ๋ƒ ์งˆ๋ฌธ์„ ํ•œ๋‹ค.) ์‘๋‹ตํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์„ค์น˜๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

3. ์ด๋ฏธ์ง€๋ž€

๋ช…๋ น์–ด ์„ค๋ช… ์‚ฌ์šฉ ๋ฐฉ๋ฒ• ๋น„๊ณ 
FROM ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ์ง€์ • FROM <์ด๋ฏธ์ง€_์ด๋ฆ„>  
ADD ํŒŒ์ผ ์ถ”๊ฐ€ ADD <์ถ”๊ฐ€ํ•  ํŒŒ์ผ> <ํŒŒ์ผ์ด ์ถ”๊ฐ€๋  ๊ฒฝ๋กœ> ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— ์žˆ๋Š” ๊ฒƒ๋งŒ ์ถ”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ฒฝ๋กœ๋ฅผ ํ†ตํ•œ ์ƒ์„ฑ์€ ๋ถˆ๊ฐ€ํ•˜๋‹ค.
RUN ๋ช…๋ น์–ด ์‹คํ–‰ RUN <๋ช…๋ น์–ด> install ํ•  ๋•Œ ์‘๋‹ต์„ ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” -y ๋“ฑ๊ณผ ๊ฐ™์ด ์‘๋‹ต์„ ๋จผ์ € ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
WORKDIR ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ณ€๊ฒฝ WORKDIF <๊ฒฝ๋กœ> RUN ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰ ๋  ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•œ๋‹ค.
ENV ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๊ธฐ๋ณธ ๊ฐ’ ์ง€์ • ENV <์ด๋ฆ„> <๊ฐ’>  
EXPOSE ์ปจํ…Œ์ด๋„ˆ๋กœ ์‹คํ–‰ ์‹œ ๋…ธ์ถœ์‹œํ‚ฌ ํฌํŠธ EXPOSE <ํฌํŠธ๋ฒˆํ˜ธ> ์ด ์˜ต์…˜์„ ์“ฐ๋”๋ผ๋„ runํ•  ๋•Œ -p์˜ต์…˜์œผ๋กœ ์™ธ๋ถ€ ํฌํŠธ์— ์—ฐ๊ฒฐ์‹œ์ผœ ์ฃผ์–ด์•ผ ํ•œ๋‹ค. docker๊ฐ€ port๋ฅผ ์—ฌ๋Š” ์—ญํ• ๋„ ํ•˜๊ณ , image๊ฐ€ ์ด port๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๋ ค ์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
CMD ์ด๋ฏธ์ง€์˜ ๊ธฐ๋ณธ ์‹คํ–‰ ๋ช…๋ น์–ด ์ง€์ • CMD <๋ช…๋ น์–ด> docker๊ฐ€ ์‹คํ–‰ํ•  ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹คํ–‰ ๋  ๋ช…๋ น์–ด ์„ค์ •


38:50 - ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ
๋งŒ๋“  ์ด๋ฏธ์ง€๋ฅผ ์˜ฌ๋ ค๋†“๋Š” ๊ณณ, private๋Š” ํ•œ ๊ฐœ ๊นŒ์ง€๋Š” ๊ณต์งœ์ด์ง€๋งŒ ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋ˆ์„ ๋‚ด์•ผํ•œ๋‹ค. public์€ ๋‹น์—ฐํžˆ ์—ฌ๋Ÿฌ๊ฐœ ์‚ฌ์šฉํ•ด๋„ ๊ณต์งœ์ด๋‹ค.

$ sudo docker login
$ sudo docker push ID/IMAGE_NAME:TAG

๋„์ปค์— ๋กœ๊ทธ์ธ ํ›„ ์ด๋ฏธ์ง€๋ฅผ pushํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„์ด๋””๋Š” dockerHub ํ™ˆํŽ˜์ด์ง€์—์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.