😎 κ³΅λΆ€ν•˜λŠ” μ§•μ§•μ•ŒνŒŒμΉ΄λŠ” μ²˜μŒμ΄μ§€?

[Docker] 도컀 μ»¨ν…Œμ΄λ„ˆ 및 node μ‹€ν–‰ λ³Έλ¬Έ

πŸ‘©‍πŸ’» 컴퓨터 ꡬ쑰/About Computer

[Docker] 도컀 μ»¨ν…Œμ΄λ„ˆ 및 node μ‹€ν–‰

μ§•μ§•μ•ŒνŒŒμΉ΄ 2023. 3. 23. 13:31
728x90
λ°˜μ‘ν˜•

<λ³Έ λΈ”λ‘œκ·ΈλŠ” μ—˜λ¦¬μŠ€ IoT 1λ₯Ό μ°Έκ³ ν•΄μ„œ κ³΅λΆ€ν•˜λ©° μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€ :-)>

 

πŸ‹ Docker

μ»¨ν…Œμ΄λ„ˆ 기반 가상화 도ꡬ (가상화 : OS μ•ˆμ—μ„œ 독립적인 OS μ‹€ν–‰)

λ³„κ°œμ˜ OS 처럼 λ³΄μž„ (=VM, ν•˜λ“œμ›¨μ–΄ 가상화)

 

https://be-developer.tistory.com/18

μ»¨ν…Œμ΄λ„ˆλΌκ³  λΆˆλ¦¬λŠ” ν•˜λ‚˜μ˜ μž‘μ€ μ†Œν”„νŠΈμ›¨μ–΄ μœ λ‹›μ•ˆμ—

μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό 그에 ν•„μš”ν•œ μ‹œμŠ€ν…œ 툴, ν™˜κ²½μ„€μ •, λͺ¨λ“  λ””νŽœλ˜μ‹œλ₯Ό ν•˜λ‚˜μ— λ¬Άμ–΄μ„œ

λ‹€λ₯Έμ„œλ²„, λ‹€λ₯Έν”Όμ”¨ κ·Έ 어떀곳에도 μ‰½κ²Œ λ°°ν¬ν•˜κ³  μ•ˆμ •μ μœΌλ‘œ ꡬ동할 수 있게 λ„μ™€μ£ΌλŠ” 툴

 

VM vs Docker

πŸ‘€ VM vs Docker
VM
: λ™μΌν•œ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ‹€μ–‘ν•œ OSμœ„μ—μ„œ κ΅¬λ™ν•˜κΈ° μœ„ν•œ μ†Œν”„νŠΈμ›¨μ–΄
: 각각의 VMμ—λŠ” OSκ°€ μ˜¬λΌκ°€κΈ° λ•Œλ¬Έμ— ꡉμž₯히 무겁고 느림

 
Docker
: ν•˜λ“œμ›¨μ–΄μ— μ„€μΉ˜λœ μš΄μ˜μ²΄μ œμ— Container Engine(Docker) λΌλŠ” μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ„€μΉ˜ν•΄ κ°œλ³„μ μΈ Containerλ₯Ό λ§Œλ“€μ–΄ 각각의 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 고립된 ν™˜κ²½μ—μ„œ ꡬ동
: VM의 κ²½λŸ‰ν™” 버전

 

πŸ™ Container λ§Œλ“€κΈ°

https://be-developer.tistory.com/18

λ„μ»€νŒŒμΌμ„ λ§Œλ“€μ–΄μ„œ 이걸둜 이미지λ₯Ό λ§Œλ“€κ³  λ§Œλ“€μ–΄μ§„ μ΄λ―Έμ§€λ‘œ μ»¨ν…Œμ΄λ„ˆλ₯Ό ꡬ동

 

1. Dockerfile

: μ»¨ν…Œμ΄λ„ˆλ₯Ό μ–΄λ–»κ²Œ λ§Œλ“€μ–΄μ•Ό ν•˜λŠ”μ§€μ— λŒ€ν•œ μ„€λͺ…μ„œ

- μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬λ™ν•˜κΈ° μœ„ν•œ νŒŒμΌμ€ 무엇인가

- μ–΄λ–€ dependenciesλ₯Ό λ‹€μš΄λ°›λŠ”κ°€

- ν•„μš”ν•œ ν™˜κ²½λ³€μˆ˜

- μ–΄λ–»κ²Œ κ΅¬λ™ν•΄μ•Όν•˜λŠ”μ§€μ— λŒ€ν•œ script

 

2. Image

: μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•˜λŠ”λ° ν•„μš”ν•œ μ½”λ“œ, λŸ°νƒ€μž„, ν™˜κ²½, μ‹œμŠ€ν…œ 툴, μ‹œμŠ€ν…œ 라이브러리 λ“± 포함

μ‹€ν–‰λ˜κ³  μžˆλŠ” μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μƒνƒœλ₯Ό μ΄λ―Έμ§€λ‘œ λ§Œλ“€μ–΄λ‘”λ‹€κ³  μƒκ°ν•˜μž

*ν•œλ²ˆ λ§Œλ“€μ–΄μ§€λ©΄ 변경이 λΆˆκ°€λŠ₯*

 

3. Container

: Imageλ₯Ό 고립된 ν™˜κ²½μ—μ„œ κ°œλ³„μ μΈ μ‹œμŠ€ν…œ μ•ˆμ—μ„œ μ‹€ν–‰ν•  수 μžˆλŠ” 곡간

container μ•ˆμ—μ„œ imageλ₯Ό μ΄μš©ν•΄ 우리의 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ ꡬ동

 

πŸ™ Container 배포 방법

https://be-developer.tistory.com/18

1. λ‚΄ λ‘œμ»¬μ—μ„œ λ§Œλ“  이미지λ₯Ό Container Registry 에 Push

2. μ„œλ²„λŠ” Container Registryμ—μ„œ 이미지λ₯Ό Pull λ‘œ λ‹Ήκ²¨μ™€μ„œ μ‚¬μš©

3. μ„œλ²„μ—λŠ” Docker μ„€μΉ˜ ν•„μˆ˜

 

πŸ™ Docker μž‘λ™ 총정리

https://be-developer.tistory.com/18

1. μ‚¬μš©μžλŠ” Local에 Dockerλ₯Ό μ„€μΉ˜ν•œ ν›„ Dockerfile을 λ§Œλ“¦

2. Dockerfile을 build μ‹œμΌœ Image둜 λ§Œλ“¦

3. λ§Œλ“  Imageλ₯Ό Container Registry에 Push

4. μ‹€μ„œλ²„μ— Dockerλ₯Ό μ„€μΉ˜ ν•œ ν›„ Container Registryμ—μ„œ Imageλ₯Ό Pull

5. Dockerμ—μ„œ Imageλ₯Ό run

 

πŸ‹ 도컀 μ»¨ν…Œμ΄λ„ˆ μ’…λ£Œ ν›„

docker commit <μ»¨ν…Œμ΄λ„ˆId> <μ €μž₯ν•˜κ³ μ‹Άμ€ 이미지 이름>
docker run -it <μ €μž₯ν•œ 이미지 이름>

 

πŸ‹ 도컀 μ»¨ν…Œμ΄λ„ˆ λ™μž‘ 확인

docker run -d -p 80:80 docker/getting-started

μ™ΈλΆ€μ—μ„œ μžλ™ 포트 : μ•ˆμ—μ„œ μž‘λ™ 포트

 

πŸ‹ 도컀 ν”„λ‘œμ„ΈμŠ€ 확인

docker ps -a

 

πŸ‹ 도컀 이미지 μ„€μΉ˜ν•΄λ³΄μž₯

docker run -itd -p 5003:5000 node:18-alpine

 

πŸ™ shell둜 λ“€μ–΄κ°€κΈ°

docker exec -it bcb sh

πŸ™ κΈ°λ³Έ νŒ¨ν‚€μ§€ μ„€μΉ˜

npm init

npm instsall express

πŸ™ app.js λ§Œλ“€κΈ° 

vi app.js

// app.js
var express = require("express");
var app = express();

app.get("/", (req, res) =>{
  res.send("hello world");
  console.log("success!");
});

app.listen(5000);

πŸ™ app.js μ‹€ν–‰ν•˜κΈ° 

node app.js

이ㄸ γ…ν¬νŠΈ λ²ˆν˜ΈλŠ”~~~~

λ‚΄ λ°μŠ€ν¬νƒ‘μ—μ„œ 5003 (μ™ΈλΆ€) μ—΄κ³ , κ·Έμ•ˆ 도컀 μ»¨ν…Œμ΄λ„ˆ(node μ•ˆμ— app.listen) 을 5000(λ‚΄λΆ€) μ—°κ²°

docker run -itd -p 5003:5000 node:18-alpine

 

728x90
λ°˜μ‘ν˜•
Comments