Docker ๐Ÿณ

์ตœ์˜ˆ๋‹ฎยท2023๋…„ 1์›” 12์ผ
0
post-thumbnail
post-custom-banner

์˜ค๋Š˜์€ 2022๋…„ ์Šคํƒ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๊ฐœ๋ฐœ์ž ์„ค๋ฌธ์กฐ์‚ฌ์—์„œ ์‚ฌ๋ž‘๋ฐ›๋Š” ๊ธฐ์ˆ ๋กœ ์„ ํƒ๋œ ๐Ÿณ Docker ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž!

Docker๋Š” ๊ณ„์†ํ•ด์„œ ์—ฌ๊ธฐ์— ์ •๋ฆฌํ•˜๋ฉด์„œ ๋‚ด๊ฐ€ ํ–ˆ๋˜ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•ด๋ณผ์ƒ๊ฐ์ด๋‹ค!

๐Ÿณ Docker ๋กœ ์™œ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ• ๊นŒ?

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

(์†”์งํžˆ ์œ„ ๋‚ด์šฉ์ด ์•„์ง ์ดํ•ด๊ฐ€ ๋‹ค ๋˜๋Š”๊ฑด ์•„๋‹ˆ์–ด์„œ ์Œ ... ํ•œ๋ฒˆ ๋งŒ๋“ค์–ด๋ณด๋ฉด์„œ ๋Š๊ปด์•ผํ• ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค.....)

์ž ๊ทธ๋Ÿผ ์šฐ๋ฆฌ ๐Ÿณ Docker ์‹œ์ž‘ํ•ด๋ณด์ž !

(๋„์ปค๋Š” ๊ณ ๋ž˜๋‹ค ๊ณ ๋ž˜! ๊ณ ๋ž˜...? ํ–ฅ...๊ณ ...๋ž˜...?)
์ด ๋„์ปค๋Š” ์žฌ๋ฏธ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์ข‹์•„ํ•˜๋Š” ๊ณ ๋ž˜ ํ€ด์ฆˆ ๊ฐ™์•„์š”. 
๋ชธ๋ฌด๊ฒŒ๊ฐ€ 22ํ†ค์ธ ์•”์ปท ํ–ฅ๊ณ ๋ž˜๊ฐ€ 500kg์— ๋‹ฌํ•˜๋Š” ๋Œ€์™•์˜ค์ง•์–ด๋ฅผ ๋จน๊ณ  6์‹œ๊ฐ„ ๋’ค 1.3ํ†ค์งœ๋ฆฌ ์•Œ์„ 
๋‚ณ์•˜๋‹ค๋ฉด ์ด ์•”์ปท ํ–ฅ๊ณ ๋ž˜์˜ ๋ชธ๋ฌด๊ฒŒ๋Š” ์–ผ๋งˆ์ผ๊นŒ์š”? 
(์ •๋ช…์„: ๋ชจ๋ฅด๊ฒ ์–ด์š”.) ์ •๋‹ต์€ โ€˜๊ณ ๋ž˜๋Š” ์•Œ์„ ๋‚ณ์„ ์ˆ˜ ์—†๋‹คโ€™์ž…๋‹ˆ๋‹ค. 
๊ณ ๋ž˜๋Š” ํฌ์œ ๋ฅ˜๋ผ ์•Œ์ด ์•„๋‹Œ ์ƒˆ๋ผ๋ฅผ ๋‚ณ์œผ๋‹ˆ๊นŒ์š”. ๋ฌด๊ฒŒ์—๋งŒ ์ดˆ์ ์„ ๋งž์ถ”๋ฉด ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. 
ํ•ต์‹ฌ์„ ๋ด์•ผ ๋ผ์š”.
(ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹)

1. app.js ์ž‘์„ฑ

const express = require('express');
const app = express()

app.get('/', (req, res) => res.send('Hello World'));

app.listen(3000, () => {
    console.log('My REST API running on port 3000!');
})

1 - (1)

npm init

1 - (2)

npm install --save express

๊ทธ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด ๋ด…์‹œ๋‹ค.

2. Docker ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜

3. Dockerfile ์ƒ์„ฑ ๋ฐ ๋นŒ๋“œ

FROM node:12-alpine
WORKDIR /app
COPY package*.json /app
RUN npm install
COPY . /app
CMD [ "npm", "start" ]
EXPOSE 3000
  • Docker Hub์— ์žˆ๋Š” node:12-alpine ์ด๋ฏธ์ง€ ์‚ฌ์šฉ
  • ์ด๋ฏธ์ง€ ์•ˆ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ๋„ฃ๊ธฐ ์œ„ํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ƒ์„ฑ. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ž‘์—… dir๊ฐ€ ๋œ๋‹ค
  • node:12 ์ด๋ฏธ์ง€์— node.js์™€ npm์€ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ npm๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ์•ฑ ์˜์กด์„ฑ๋งŒ ์„ค์น˜
  • npm ์„ค์น˜ (RUN์€ ์ƒˆ๋กœ์šด ๋ ˆ์ด์–ด ์œ„์—์„œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ ์ฃผ๋กœ ํŒจํ‚ค์ง€ ์„ค์น˜์šฉ)
  • Docker ์ด๋ฏธ์ง€ ์•ˆ์— ์•ฑ์˜ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋„ฃ๊ธฐ ์œ„ํ•จ
  • CMD๋Š” ๋„์ปค๊ฐ€ ์‹คํ–‰๋ ๋•Œ ์‹คํ–‰๋˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์ •์˜
  • 3000๋ฒˆ ํฌํŠธ๋กœ ์‹คํ–‰

4. dockerignore ์ž‘์„ฑ

๋นŒ๋“œ ์ „, .dockerignoreํŒŒ์ผ ์ƒ์„ฑ. Docker image์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ node_modules ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ํ˜„์žฌ ๋กœ์ปฌ ์ž‘์—… ๋””๋ ˆํ„ฐ๋ฆฌ์˜ node_modules ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ๋ฎ์–ด์ง€์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.

docker build -t node-docker-test .

๋ฌธ์ œ๋ฐœ์ƒ 1 ...

??? ๋ญ์ง€ ์ด๊ฒŒ ...
์ฐพ์•„๋ณด๋‹ˆ Docker QuickStart Terminal ์ด ํ•„์š”ํ–ˆ๋‹ค.

๋‹ค์šด๋กœ๋“œ ๋งํฌ

https://github.com/docker-archive/toolbox

๊ฐ์ž ์•Œ๋งž์€ OS๋ฅผ ์„ ํƒํ•˜์—ฌ ๋‹ค์šด๋ฐ›์œผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹น.

๐Ÿณ ๊ท€์—ฌ์›Œ ...

์ž ์ด์ œ ์—ฌ๊ธฐ์— ์ด์ œ ์•„๊นŒ ๊ทธ ๋ช…๋ น์–ด๋ฅผ ์น˜๋ฉด ๋˜๊ฒ ์ง€?

๋ฌธ์ œ๋ฐœ์ƒ 2

(... ๋‚˜ํ•œํ…Œ ์™œ๊ทธ๋ž˜)

๋‚˜์™€! ๊ตฌ๊ธ€๋ง๋ชฌ !!

(๊ฐ“ ๊ตฌ๊ธ€... ํ• ๋ ๋ฃจ์•ผ ... ๊ทธ๋Š” ๋น›์ด์•ผ โœจ)

๋‹ค์šด๋กœ๋“œ ๋งํฌ

https://docs.docker.com/desktop/install/mac-install/

์—ฌ๊ธฐ์— ๊ฐ€์„œ Desk On Mac ์ด๊ฑธ ๋ฒ„์ „์— ๋งž๊ฒŒ ๋‹ค์šด๋กœ๋“œํ•˜๋ฉด ๋œ๋‹ค.

(์•„ ๋ฌผ๋ก  ๋งฅ ๊ธฐ์ค€์ž…๋‹ˆ๋‹น...)

(ใ„ท...๋˜...๋œ๋‹ค !!!!!!)

docker images

์ €๊ฑธ ์ž…๋ ฅํ•˜๊ฒŒ๋˜๋ฉด ์œ„์— SIZE ๊ฐ™์€๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋Œ€๋ฐ• !!

๐Ÿณ Docker ๋ช…๋ น์–ด

docker ps                   // ์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ์กฐํšŒ
docker ps -a                // ์ค‘์ง€์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๊นŒ์ง€ ๋ชจ๋‘ ์กฐํšŒ
docker images               // ์ด๋ฏธ์ง€ ์กฐํšŒ
docker rm ์ปจํ…Œ์ด๋„ˆID        // ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ, ์ค‘์ง€๋œ ๊ฒƒ๋งŒ ์‚ญ์ œ๊ฐ€๋Šฅ
docker stop ์ปจํ…Œ์ด๋„ˆID      // ์ปจํ…Œ์ด๋„ˆ ์ค‘์ง€
docker rmi ์ด๋ฏธ์ง€๋ช…         // ์ด๋ฏธ์ง€ ์‚ญ์ œ

docker start ์ปจํ…Œ์ด๋„ˆID     // ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘
docker restart ์ปจํ…Œ์ด๋„ˆID   // ์ปจํ…Œ์ด๋„ˆ ์žฌ๋ถ€ํŒ…

docker attatch ์ปจํ…Œ์ด๋„ˆID   // ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ์— ์ ‘์†

์˜ค๋Š˜์€ ์ฒซ๋‚ ์ด์—ˆ์œผ๋‹ˆ๊นŒ ๋ญ ... ์ ์šฉํ•  ์ˆ˜ ์žˆ์„๊ฑฐ์•ผ ...

์šฐ ํˆฌ๋” ์˜ ํˆฌ๋” ์šฐ .... ํž˜๋‚ด์ž ์šฐ๋ฆฌ ...

์ถœ์ฒ˜ : https://ebbnflow.tistory.com/206
์ถœ์ฒ˜ : https://somjang.tistory.com/entry/Docker-Cannot-connect-to-the-Docker-daemon-at-unixvarrundockersock-Is-the-docker-daemon-running-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95

profile
์‚ฐ์„ ์˜ค๋ฅด๋ ค๊ณ  ํ•˜๋Š”๋ฐ ์ด์ œ ์ฃผ์ฐจ์žฅ์— ๋ง‰ ์ฃผ์ฐจํ•œ ์ดˆ๋ณด๊ฐœ๋ฐœ์ž
post-custom-banner

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