๐Ÿ“Œ ๊ณต๋ถ€ ๊ณ„๊ธฐ

์›ํ‹ฐ๋“œ ์ฑŒ๋ฆฐ์ง€๊ฐ€ ์ด๋ฒˆ ๋‹ฌ ์ œ๊ณตํ•˜๋Š” ๊ฐ•์˜๋Š” Docker! Docker ๊ฐ•์˜๊ฐ€ ์ด 4๋ฒˆ ์ด๋ฃจ์–ด์ง€๋Š” ๋ฐ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

Docker ๊ฐ•์˜ 1 : 

๋ชฉ์ฐจ

     

    ๐Ÿ“์ด๋ก ํŽธ : ๋„์ปค ๊ฐœ๋…

    * ๋„์ปค ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€

     

    Docker: Accelerated, Containerized Application Development

    Docker is a platform designed to help developers build, share, and run modern applications. We handle the tedious setup, so you can focus on the code.

    www.docker.com

    ๋„์ปค ์ด๋ก  ํŽธ์€ ์ด์ „ ๋„์ปค ๊ฐœ๋…์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์— ๊ณ ๋ณ‘ํ˜„๋‹˜์˜ ๊ฐ•์˜๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•ด ์ •๋ฆฌ

     

    Docker] ๊ฐœ๋…

    ๐Ÿ“Œ ๊ณต๋ถ€ ์ด์œ  ์‹ค์ „ ํ”„๋กœ์ ํŠธํ•˜๋ฉด์„œ ๋ฐฑ์—”๋“œ๋ฅผ ๊ณ ๋„ํ™”ํ•˜๋ฉด์„œ ์—ฌ๋Ÿฌ๊ธฐ์ˆ ์— ๋„์ „ํ•ด๋ณด๊ณ  ์žˆ๋‹ค. Docker๋„ ๊ทธ ์ค‘ ํ•˜๋‚˜๋กœ, ์ด๋ฆ„๋งŒ ์•Œ๊ณ  ๋ญํ•˜๋Š” ๋…€์„์ธ์ง€ ์ „ํ˜€ ๋ชฐ๋ž๊ธฐ ๋•Œ๋ฌธ์— ๋จผ์ € ๊ฐœ๋…์„ ๊ณต๋ถ€ํ•ด๋ณด๊ณ  ์‹ค์Šต

    littlezero48.tistory.com

     

     

    ๐Ÿ“์‹ค์ŠตํŽธ 1 : ๊ธฐ๋ณธ CLI

    ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์˜ Command-line reference (๊ณต์‹ ํ™ˆํŽ˜์ด์ง€๋ฅผ ๊ณต๋ถ€ํ•˜์ž!)

     

    Docker run reference

     

    docs.docker.com

     

    0๏ธโƒฃ ์‚ฌ์ „ ์ค€๋น„ 

    ๋”๋ณด๊ธฐ

     

    ๐Ÿ“ข ์ฐธ๊ณ  : ์ €๋Š” ์œˆ๋„์šฐ์— ๋ฆฌ๋ˆ…์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š”  WSL2 ์„ค์น˜ํ•œ ํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰ ํ–ˆ์Šต๋‹ˆ๋‹ค. 

     

    * ํŒŒ์›Œ์‰˜์—์„œ ๋ช…๋ น์–ด wsl ์ ‘์† or Ubuntu on Windows ์‹คํ–‰

    * Docker Desktop ์‹คํ–‰๋„ ํ•ด์ค˜์•ผ ํ•จ

    ํŒŒ์›Œ์‰˜ ๊ฒฝ์šฐ
    Ubuntu on Windows ์‹คํ–‰

     


     

    1๏ธโƒฃ ๋„์ปค ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ 

    - Docker hub๋กœ ๋ถ€ํ„ฐ httpd ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋ฐ›์•„ ๋ณธ๋‹ค 

    docker pull ์ด๋ฏธ์ง€์ด๋ฆ„

     

    - pullํ•˜๊ณ  ๋‚˜์„œ ์ด๋ฏธ์ง€ ์กฐํšŒ ํ•˜๋ฉด ์ถ”๊ฐ€๋œ ๊ฑธ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค

     


     

    2๏ธโƒฃ ์ด๋ฏธ์ง€๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ 

    - run ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ

    * ์ฃผ์˜ : httpd ๊ฐ™์€ ๊ฒฝ์šฐ run ์‹œํ‚ค๋ฉด ์ด ํ™”๋ฉด์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค. ํ™”๋ฉด์„ ๋ถ„ํ• ํ•ด์„œ ์ดํ›„ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ž

    (์•„๋‹ˆ๋ฉด d ์˜ต์…˜์„ ํ•จ๊ป˜ ์ฃผ์–ด ๋ฐ๋ชฌ๋ชจ๋“œ๋กœ run!)

    ๋”๋ณด๊ธฐ

    โœ… ํ™”๋ฉด ๋ถ„ํ•  ๋ฐฉ๋ฒ•

     ๋ฐฉ๋ฒ•1) ํƒญ ํƒ€์ดํ‹€์—์„œ ์˜ค๋ฅธ์ชฝ ํด๋ฆญ (๋‹จ, ์„ธ๋กœ -> ๊ฐ€๋กœ -> ์„ธ๋กœ -> ... ์‹์œผ๋กœ ๋ถ„ํ• )

     

    ๋ฐฉ๋ฒ•2) Ctrl + Shift + P ๋กœ ๋ช…๋ น ๋„๊ตฌ ๋ชจ์Œ์„ ์‹คํ–‰ํ•ด์„œ 

     

    ์ถ”๊ฐ€ํ•  ๋ฐฉํ–ฅ์„ ์„ ํƒํ•ด ํด๋ฆญ

     

    โœ… ๊ฒฐ๊ณผ 

     

     

    - ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ํ™•์ธ (์ด๋ฆ„ ์„ค์ •์„ ์•ˆํ•˜๋ฉด container name์€ ์ž„์˜๋กœ ๊ฒฐ์ •๋จ)

    docker ps

     

    - ์ด๋ฆ„์˜ต์…˜์„ ์‚ฌ์šฉํ•ด ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์„ ์„ค์ •ํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ (secondContainer ๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ)

    docker run --name ์ปจํ…Œ์ด๋„ˆ์ด๋ฆ„ ์‚ฌ์šฉํ• ์ด๋ฏธ์ง€์ด๋ฆ„

    ์ง€์ •์ด๋ฆ„์œผ๋กœ ์ƒ์„ฑ ํ™•์ธ! ๊ทธ๋ฆฌ๊ณ  run์œผ๋กœ ํ•˜๋ฉด ๋ฌด์กฐ๊ฑด ์ƒˆ๋กœ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ

     


     

    3๏ธโƒฃ ์ปจํ…Œ์ด๋„ˆ์˜ ํฌํŠธ์™€ ์—ฐ๋™์‹œํ‚ค๊ธฐ (Port Forwarding)[๊ฐ์ฃผ:1]

    - ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ์‹œ p ์˜ต์…˜์œผ๋กœ LocalPort : ContainerPort ๋กœ ํ•ด์„œ ํฌํŠธ๋ฅผ ์—ฐ๊ฒฐํ•œ๋‹ค.

    docker run -p ๋กœ์ปฌํฌํŠธ:์ปจํ…Œ์ด๋„ˆํฌํŠธ --name ์ปจํ…Œ์ด๋„ˆ์ด๋ฆ„ ์‚ฌ์šฉํ• ์ด๋ฏธ์ง€์ด๋ฆ„

    ํฌํŠธํฌ์›Œ๋”ฉ์ด ๋œ ๊ฑธ ํ™•์ธ
    ์•„ํŒŒ์น˜ ์„œ๋ฒ„(ํฌํŠธ80) ๊ธฐ๋ณธ ํŽ˜์ด์ง€ ๋ฐ์ดํ„ฐ๊ฐ€ ์„œ๋น™๋œ ๊ฑธ ํ™•์ธ

     


     

    4๏ธโƒฃ ์ด๋ฏธ์ง€ ๋‚ด๋ถ€์˜ ํŒŒ์ผ์„ ๊ต์ฒดํ•˜๊ธฐ 

    - ๊ต์ฒดํ•˜๋ ค๋Š” ํŒŒ์ผ์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ฐพ์•„๊ฐ

     

     - ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•ด VScode ์‹คํ–‰

    code .

     

    - ์œ„ ๊ฒฝ๋กœ์˜ index.html์„ ์„œ๋น™ํ•˜๋„๋ก ๊ต์ฒดํ•˜๊ณ  ์‹ถ๋‹ค! 

    v ์˜ต์…˜์„ ํ†ตํ•ด์„œ ๋ณผ๋ฅจ ๋งˆ์šดํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•œ๋ฐ ์ด๊ฒŒ ์ด๋ฏธ์ง€์˜ ํŒŒ์ผ์„ ํ˜ธ์ŠคํŠธ์˜ ํŒŒ์ผ๋กœ ๋ฎ์–ด์”Œ์šฐ๋Š” ๊ฑธ ๋งํ•œ๋‹ค. 

     

    ์—ฌ๊ธฐ์„œ -v HostPath : ContainerPath ๋กœ ์•ž์˜ HostPath๋Š” ๋ฎ์–ด์”Œ์šธ ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒฝ๋กœ๋กœ 

    ๋‚ด๊ฐ€ ๋ฎ์–ด์”Œ์šฐ๋ ค๋Š” ๊ฒฝ๋กœ๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ์˜ ํ•˜๋Š˜์ƒ‰ ๊ธ€์ž ๋ถ€๋ถ„๊ณผ ๊ฐ™๋‹ค. 

    ํ˜ธ์ŠคํŠธ ๊ฒฝ๋กœ ๋ฐฉ์‹ ์ ์šฉ์€ ์œˆ๋„์šฐ๋ž‘ ์šฐ๋ถ„ํˆฌ๋ž‘ ๋‹ค๋ฅด๋‹ˆ ์ฐธ๊ณ !

    ์šฐ๋ถ„ํˆฌ์˜ home/๊ณ„์ •/ ์•„๋ž˜๋ถ€ํ„ฐ ๊ฒฝ๋กœ ์‹œ์ž‘
    ์œˆ๋„์šฐ ๊ฒฝ์šฐ๋Š” ์ ˆ๋Œ€๊ฒฝ๋กœ
    ๋‹ค๋ฅธ index.html๋กœ ์ ์šฉ๋œ ๋ชจ์Šต

     


     

    5๏ธโƒฃ ์ปจํ…Œ์ด๋„ˆ STOP 

    docker stop ์ปจํ…Œ์ด๋„ˆID 
    docker stop ์ปจํ…Œ์ด๋„ˆ์ด๋ฆ„

    ์ปจํ…Œ์ด๋„ˆ ID๋กœ ์ •์ง€
    ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์œผ๋กœ ์ •์ง€

     


     

    6๏ธโƒฃ ์ปจํ…Œ์ด๋„ˆ START 

    run ์ฒ˜๋Ÿผ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ๊ณผ ๋™์‹œ์— ์‹คํ–‰ํ•˜๋Š” ๊ฒŒ ์•„๋‹Œ ๋ฉˆ์ถค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค์‹œ ์‹คํ–‰์‹œํ‚ค๋Š” ๋ช…๋ น์–ด

     

    - ์ผ๋‹จ docker ps๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ๋งŒ ์กฐํšŒํ–ˆ๋‹ค๋ฉด ์—ฌ๊ธฐ์— -a ์˜ต์…˜ (all)์„ ๋ถ™์—ฌ ์‹คํ–‰์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ์ƒ์„ฑ๋˜์–ด์žˆ๋Š” ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์กฐํšŒํ•œ๋‹ค.

    docker ps -a

     

    - ์‹คํ–‰

    STATUS๋ฅผ ๋ณด๋ฉด Exited ์—์„œ Up์œผ๋กœ ๋ณ€๊ฒฝ๋˜๋ฉฐ ์‹คํ–‰

    docker start ์ปจํ…Œ์ด๋„ˆID 
    docker start ์ปจํ…Œ์ด๋„ˆ์ด๋ฆ„

    ์ปจํ…Œ์ด๋„ˆ ID๋กœ ์‹คํ–‰
    ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์œผ๋กœ ์‹คํ–‰

     


     

    7๏ธโƒฃ ์ปจํ…Œ์ด๋„ˆ ์ œ๊ฑฐ 

    rm ๋ช…๋ น์–ด (remove) ๋ฅผ ์‚ฌ์šฉํ•ด ์ปจํ…Œ์ด๋„ˆ ์ œ๊ฑฐ 

    docker rm ์ปจํ…Œ์ด๋„ˆID 
    docker rm ์ปจํ…Œ์ด๋„ˆ์ด๋ฆ„

    ๋‘˜๋‹ค ์ง€์šฐ๊ณ  ๋‚˜๋‹ˆ ps -a ์‹œ ์•„๋ฌด๊ฒƒ๋„ ์•ˆ๋‚˜์˜ค๋Š” ๊ฒƒ ํ™•์ธ!

     

     

    + ์ฐธ๊ณ ๋กœ ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋Š” ์‚ญ์ œํ•  ์ˆ˜ ์—†๋‹ค. stop์œผ๋กœ ์ •์ง€ํ•˜๊ณ  ์ง€์šธ ๊ฒƒ

     


     

    8๏ธโƒฃ ์ด๋ฏธ์ง€ ์ œ๊ฑฐ 

    rmi ๋ช…๋ น์–ด (remove image) ๋ฅผ ์‚ฌ์šฉํ•ด ์ด๋ฏธ์ง€ ์ œ๊ฑฐ

    docker rmi ์ด๋ฏธ์ง€์ด๋ฆ„

    ์ด๋ฏธ์ง€ ์‚ญ์ œ ํ™•์ธ

     

    + ์ด๋ฏธ์ง€ ์—ญ์‹œ ์ด ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ์ง€์šธ ์ˆ˜ ์—†๋‹ค. ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ชจ๋‘ ์ง€์›Œ์•ผ ์ œ๊ฑฐ ๊ฐ€๋Šฅ

     

     

     

    ๐Ÿ“์‹ค์ŠตํŽธ 2 : ์ปค์Šคํ…€ ์ด๋ฏธ์ง€ ์ƒ์„ฑ

     

    Dockerfile reference

     

    docs.docker.com

     

    ์‹ค์Šต ๋‚ด์šฉ

    httpd ์ด๋ฏธ์ง€๋ฅผ pull ๋ฐ›์•„ ์‹ค์Šต 1๋•Œ ์ฒ˜๋Ÿผ index.html์„ ๊ต์ฒดํ•˜๊ณ  ํฌํŠธํฌ์›Œ๋”ฉ๊นŒ์ง€ ํ•ด์„œ run ํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑ

     

    1๏ธโƒฃ ๋„์ปค ํŒŒ์ผ ์ƒ์„ฑ 

    ๋„์ปคํŒŒ์ผ์€ yaml(์•ผ๋ฏˆ)ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค 

    yamlํŒŒ์ผ ๋ช…๋ น์–ด๋Š” ARG(ํ™˜๊ฒฝ๋ณ€์ˆ˜), From(๋ฒ ์ด์Šค์ด๋ฏธ์ง€), CMD(๋ช…๋ น ์‹คํ–‰) ๋“ฑ์ด ์žˆ๋Š”๋ฐ ์œ„์˜ ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์— ๋” ๋งŽ์ด ์žˆ๋‹ค. ์ด๋ฒˆ์€ ๊ฐ„๋žตํ•˜๊ฒŒ 3๊ฐ€์ง€ ๋ช…๋ น์–ด ๋งŒ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์Šต!

     

    * ๋„์ปคํŒŒ์ผ

    FROM : httpd:latest ์ด๋ฏธ์ง€๋ฅผ ๋ฒ ์ด์Šค๋กœ

    COPY : host ํ˜„์žฌ ๊ฒฝ๋กœ์˜ index.html ํŒŒ์ผ์„ ์ปจํ…Œ์ด๋„ˆ์˜ /usr/local/apache2/htdocs/index.html์˜ ๊ฒฝ๋กœ๋กœ ๋ณต์‚ฌํ•œ๋‹ค

    EXPOSE : ๊ทธ๋ฆฌ๊ณ  80ํฌํŠธ๋ฅผ ์—ฐ๋‹ค

     

     


     

    2๏ธโƒฃ ๋„์ปค ์ด๋ฏธ์ง€ ์ƒ์„ฑ 

    build ๋ช…๋ น์–ด๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๋Š” ์ด๋ฏธ์ง€๋Š” -t ์˜ต์…˜ (tag)์„ ํ†ตํ•ด ์ด๋ฏธ์ง€ ์ด๋ฆ„์ด ์„ค์ •๋˜๊ณ  

    ๊ฒฝ๋กœ ๊ฒฝ์šฐ ํ˜„์žฌ ๊ฒฝ๋กœ๋กœ ๋ถ€ํ„ฐ์˜ ์œ„์น˜๋ฅผ ๋งํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ด๋ฏธ ๊ทธ ์œ„์น˜์— ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— . ์œผ๋กœ ํ‘œํ˜„

    docker build -t ์ด๋ฏธ์ง€์ด๋ฆ„ ๊ฒฝ๋กœ

    ๋ณด๋ฉด ์„ค์ •ํ•œ ํƒœ๊ทธ๋กœ ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋œ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค

     


    3๏ธโƒฃ ์ปค์Šคํ…€ํ•œ ์ด๋ฏธ์ง€ ์‹คํ–‰ 

    ํฌํŠธํฌ์›Œ๋”ฉํ•ด์„œ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ๋ฐ ์‹คํ–‰
    ํ™•์ธ

    ๋ณผ๋ฅจ ๋งˆ์šดํŠธ ๊ณผ์ •์—†์ด ๋ฐ”๋กœ ์ปค์Šคํ…€ index.html๋กœ ์ ์šฉ๋œ ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

     

    ์ด๋Ÿฐ์‹์œผ๋กœ ๋งŒ๋“  ๊ฒƒ์„ docker hub์— ์˜ฌ๋ ค ์–ธ์ œ๋“  ๋‹ค์šด๋ฐ›์•„ ์‚ฌ์šฉ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

     

     

     


    ์ฒซ๋ฒˆ์งธ ๊ฐ•์˜ ๋


    1. ํฌํŠธํฌ์›Œ๋”ฉ์ด๋ž€?
      ์™ธ๋ถ€ ์ฃผ์†Œ์™€ ๋‚ด๋ถ€ ์ฃผ์†Œ๋ฅผ ์ด์–ด์ฃผ๋Š” ๊ฒƒ [๋ณธ๋ฌธ์œผ๋กœ]

    + Recent posts