JUST DO IT!

๊ฐ„๋‹จํ•œ Docker ์ด๋ฏธ์ง€ ๋งŒ๋“ค์–ด์„œ Docker hub์— ๋„ฃ๊ณ  ์‹ค์Šตํ•ด๋ณด๊ธฐ - TIL230612 ๋ณธ๋ฌธ

TIL

๊ฐ„๋‹จํ•œ Docker ์ด๋ฏธ์ง€ ๋งŒ๋“ค์–ด์„œ Docker hub์— ๋„ฃ๊ณ  ์‹ค์Šตํ•ด๋ณด๊ธฐ - TIL230612

sunhokimDev 2023. 6. 13. 02:01

๐Ÿ“š KDT WEEK 11 DAY 1 TIL

  • Docker ์‹ค์Šต
    • ๋ฆฌ๋ˆ…์Šค
    • ์šฐ๋ถ„ํˆฌ
    • MySQL

Airflow ์ธก๋ฉด์—์„œ ๋ฐ”๋ผ๋ณด๋Š” Docker

๋”๋ณด๊ธฐ

Airflow ์šด์˜์ƒ์˜ ์–ด๋ ค์›€

 

DAG์˜ ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๋ฉด ๋ฐ์ดํ„ฐ ํ’ˆ์งˆ์ด๋‚˜ ๋ฐ์ดํ„ฐ ๋ฆฌ๋‹ˆ์ง€ ์ด์Šˆ ๋“ฑ ์™ธ์—๋„ ๋‹ค๋ฅธ๋„ ๋ฐœ์ƒํ•˜๋Š”๋ฐ,

DAG ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถฉ๋Œ, Worker๋ถ€์กฑ, Worker ์„œ๋ฒ„๋“ค์˜ ๊ด€๋ฆฌ์™€ ํ™œ์šฉ๋„ ์ด์Šˆ ๋“ฑ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด๋Ÿฐ ์ด์Šˆ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ, Docker์™€ K8s๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

 

  • ํƒœ์Šคํฌ๋‚˜ DAG ์ฝ”๋“œ๋ฅผ Docker Image๋กœ ๋งŒ๋“ค์–ด์„œ Docker Container ํ˜•ํƒœ๋กœ ์‹คํ–‰
    • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋ชจ๋“ˆ ์ถฉ๋Œ ๋ฐฉ์ง€
    • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์„ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€ ๊ฐ€๋Šฅ
  • Airflow Worker๋ฅผ K8s(๊ณต์šฉ ์„œ๋ฒ„ ํด๋Ÿฌ์Šคํ„ฐ)์—์„œ ํ•„์š”ํ•œ ๋Œ€๋กœ ๋™์ ์œผ๋กœ ํ• ๋‹นํ•˜์—ฌ ์‚ฌ์šฉ
    • ์ „์šฉ ์„œ๋ฒ„๋ฅผ Airflow์—์„œ ํ• ๋‹นํ•˜์ง€ ์•Š๊ณ  Container Orchestration ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ํ• ๋‹นํ•ด์„œ ์‚ฌ์šฉํ•˜๊ณ  ๋ฆฌํ„ดํ•œ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ Docker์™€ K8s์— ํ•ด๋‹นํ•˜๋Š” Airflow Operator๋‚˜ Airflow Executor๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

(Docker Operator, KubernetesPodOperator, KubernetesExecutor, CeleryKubernetesExecutor, LocalKubernetesExecutor)

 

Airflow Executor

Task๋“ค์„ ๊ด€๋ฆฌํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ ( ๋ณ‘๋ ฌ or ์ผ๋ ฌ ?)

 

์ข…๋ฅ˜

  • Sequential Executor : ๋””ํดํŠธ๋กœ ์„ค์น˜๋˜๋ฉฐ, Sqlite์™€ ๊ฐ™์€ ์‹ฑ๊ธ€์Šค๋ ˆ๋“œ DB์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • Local Executor : ๋‹ค์ˆ˜์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์ง€์›ํ•˜๋Š” PostgreSQL, MySQL ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ณ‘๋ ฌ๊ฐ€๋Šฅ, Airflow ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์•ˆ์—์„œ task ์‹คํ–‰
  • Celery Executor : ์‹คํ–‰๋  task๋“ค์„ Celery ํ์— ๋„ฃ์–ด Worker ๋…ธ๋“œ๋กœ ๋ถ„์‚ฐํ•˜์—ฌ ์‹คํ–‰
  • Kubernetes Executor : K8s ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ task๋“ค์„ ๋…๋ฆฝ๋œ ํ™˜๊ฒฝ(๋นŒ๋ฆฐ ํ™˜๊ฒฝ)์—์„œ ์‚ฌ์šฉ > Task๋ฅผ Docker Image๋กœ ๊ตฌํ˜„ํ•„์š”
    • Kubernetes Executor๋Š” CeleryKubernetesExecutor์™€ LocalKubernetesExecutor๊ฐ€ ์กด์žฌํ•˜์—ฌ ํ˜ผํ•ฉํ•˜์—ฌ ์‚ฌ์šฉ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

Docker์— ๋Œ€ํ•ด์„œ ์ „์— TIL๋กœ ๊ธ€์„ ์ ์€ ์ ์ด ์žˆ๋‹ค.

Docker๋Š” ๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ผ๊ด€๋˜๊ฒŒ ๋นŒ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ณ  ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ‚ค์ง€ ํ”Œ๋žซํผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

Docker ์„ค๋ช… ๋งํฌ : https://sunhokimdev.tistory.com/30

 

Docker์™€ Docker File - TIL230519

๐Ÿ“š KDT WEEK 7 DAY 5 TIL AWS Lambda Docker Docker ๋ช…๋ น์–ด Docker File Docker Port forwarding ๐ŸŸฅ AWS Lambda ๋ณ„๋„์˜ ์„œ๋ฒ„์—†์ด ๋‹จ์ˆœ ํ•จ์ˆ˜๋งŒ์œผ๋กœ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ์„œ๋น„์Šค ํŠน์ • ์ด๋ฒคํŠธ๋‚˜ ํ–‰์œ„์— ๋Œ€ํ•ด ํ”„๋กœ๊ทธ๋žจ

sunhokimdev.tistory.com

Docker๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์—, ๊ฐ€์žฅ ๋งŽ์ด ๋น„๊ต๋˜๋Š” Virtual Machine๊ณผ ์ฐจ์ด์ ์„ ์•Œ์•„๋ณด์ž.

Virtual Machine VS Docker

๋‘˜ ๋‹ค ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋…๋ฆฝ์ ์ด๊ณ  ๋ถ„๋ฆฌ๋œ ๊ณต๊ฐ„์„ ์ œ๊ณตํ•œ๋‹ค.

 

VM

  • ๋‹ค์ˆ˜์˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐ VM๋‹จ์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๊ฐ€๋Šฅ
  • ๊ฐ VM์€ ์ž์‹ ๋งŒ์˜ OS๋ฅผ ํ•„์š”๋กœ ํ•˜๋ฏ€๋กœ ์œ ๋ฃŒ OS์—๋Š” ๋น„์šฉ์ด ๋“ค๊ณ , ์ž์›๋„ ๋งŽ์ด ์‚ฌ์šฉํ•จ.

 

Docker

 

  • ๋‹ค์ˆ˜์˜ ์†Œํ”„ํˆฌ์—์–ด๋ฅผ ๊ฐ Container๋‹จ์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋ฉฐ, ๋‹ค์ˆ˜์˜ Container๋ฅผ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • Host OS๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ณ„๋„ ๋น„์šฉ๋„ ์—†๊ณ , ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋จ
  • Host OS๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ Cross-platform Compatibility๋ฅผ ํ•ญ์ƒ ์ง€์› x
  • ๋งŽ์€ ์ˆ˜์˜ Container๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ์‰ฝ์ง€ ์•Š๋‹ค. > K8s ์‚ฌ์šฉ

 

VM vs Docker ,์ถœ์ฒ˜ : k21academy

 

 

๐ŸŸฅ Docker ์‹ค์Šต

 

1. Docker File ์ƒ์„ฑ + ์ฝ”๋“œ ํŒŒ์ผ ์ƒ์„ฑ

 

๋จผ์ € ์‚ฌ์šฉํ•  ๋„์ปค ์ด๋ฏธ์ง€ ์ด๋ฆ„์œผ๋กœ ํด๋”๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•˜๊ณ , Docker File์„ ์ƒ์„ฑํ•œ๋‹ค.

node๋ฅผ ๊ธฐ๋ณธ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ์‚ฌ์šฉํ•˜๊ณ , ์•ŒํŒŒ์ธ์ด๋ผ๋Š” ๊ฒฝ๋Ÿ‰ํ˜• ๋ฆฌ๋ˆ…์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  app.js๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋„์ปคํŒŒ์ผ์ด๋‹ค.

 

Dockerfile ํŒŒ์ผ์—๋Š” ํ™•์žฅ์ž๊ฐ€ ์—†์–ด์•ผํ•œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๊ฐ„๋‹จํžˆ ๋ฌธ์žฅ์„ ํ•˜๋‚˜ ์ถœ๋ ฅํ•  app.js๋„ ์ถ”๊ฐ€ํ•ด์ฃผ์—ˆ๋‹ค.

console.log("Hello Docker!");

 

2. Docker Image ์ƒ์„ฑ

 

ํ„ฐ๋ฏธ๋„์— ์ƒ์„ฑํ–ˆ๋˜ ํด๋”๋กœ ์ด๋™ํ•˜๊ณ , ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

docker build --platform linux/amd64 -t hello-world-docker .

ํ˜„์žฌ ํด๋”์— hello-world-docker ์ด๋ฆ„์˜ ๋„์ปค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

--platform linux/amd64 ์˜ต์…˜์„ ํ†ตํ•ด ๋ฆฌ๋ˆ…์Šค amd64๋ฅผ ๋ฒ ์ด์Šค๋กœํ•˜๋Š” ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ด์•ผํ•œ๋‹ค.

์ด ๋ช…๋ น์–ด๊ฐ€ ์—†์œผ๋ฉด ๋งฅ์˜ ๊ฒฝ์šฐ ARM ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋กœ ๋งŒ๋“ค์–ด์ ธ ์ผ๋ฐ˜ ๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” ๋Œ์•„๊ฐ€์ง€ ์•Š๋Š”๋‹ค.

 

-t๋Š” ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜์œผ๋กœ, ์ด๋ฏธ์ง€ ์ด๋ฆ„ ๋’ค์— ์ฝœ๋ก ์„ ์ฐ๊ณ  ๋ฒ„์ „์ด๋ฆ„์„ ๊ธฐ์ž…ํ•˜์ง€๋งŒ ๊ธฐ์ž…ํ•˜์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ latest ๋ฒ„์ „์œผ๋กœ ๋“ฑ๋ก๋œ๋‹ค.

 

docker image๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋นŒ๋“œ๋˜๋Š” ๋ชจ์Šต

 

๋นŒ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์ƒ์„ฑํ–ˆ๋˜ ์ด๋ฏธ์ง€ ์ด๋ฆ„์œผ๋กœ ๋„์ปค๋ฅผ ์‹คํ–‰์‹œ์ผœ๋ณด์ž.

์ฒ˜์Œ ๋„์ปค๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋Š” run ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

docker run hello-world-docker

 

๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ์˜ ๋ช…๋ น์–ด๋กœ ์ƒ์„ฑ๋œ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

docker image ls

 

๋„์ปค๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ls๋กœ ํ™•์ธํ•ด๋ณด๋‹ˆ ์ƒ์„ฑํ–ˆ๋˜ ๋„์ปค๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

3. Docker hub์— Repo ๋งŒ๋“ค๊ธฐ

๋„์ปค ํ—ˆ๋ธŒ์— ๋‚ด๊ฐ€ ๋งŒ๋“  ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๊ณต์œ ํ•  ๊ฒƒ์ด๋‹ค.

์•„๋ž˜ ์‚ฌ์ดํŠธ์—์„œ ๊ณ„์ •์ด ์—†๋‹ค๋ฉด ๊ฐ€์ž…ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๊ฐ€์ž… ๊ณผ์ •์ด ๊นŒ๋‹ค๋กญ์ง€๋Š” ์•Š์•˜๋‹ค.

Docker hub : https://hub.docker.com/

 

Docker Hub Container Image Library | App Containerization

Deliver your business through Docker Hub Package and publish apps and plugins as containers in Docker Hub for easy download and deployment by millions of Docker users worldwide.

hub.docker.com

 

 

๋กœ๊ทธ์ธ์ด ์™„๋ฃŒ๋˜๋ฉด ์ƒ๋‹จ ํƒญ์—์„œ Repositories๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋‹ค์Œ ํ™”๋ฉด์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๊ฑฐ๊ธฐ์„œ ์šฐ์ธก ์ƒ๋‹จ Create repository ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด์„œ Repo๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

๋นจ๊ฐ„ ๋„ค๋ชจ๋ฐ•์Šค์˜ Create Repository๋ฅผ ํด๋ฆญํ•˜์ž

๊ทธ๋ฆฌ๊ณ  ๋‚ด ์ด๋ฆ„์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ Repo ์ด๋ฆ„์„ ๋“ฑ๋กํ•˜์ž.

๋‚˜๋Š” ํด๋”์ด๋ฆ„๊ณผ ๋˜‘๊ฐ™์ด ์ง€์–ด์ฃผ์—ˆ๋‹ค.

 

๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ Repo ์ด๋ฆ„์„ ์ •ํ•˜๊ณ , Create๋กœ ๋“ฑ๋กํ•œ๋‹ค.

์ฐธ๊ณ ๋กœ ๋„์ปค๋Š” Private๋ฅผ ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์–‘์ด ์ •ํ•ด์ ธ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

 

4. Docker hub์— ๋‚ด Docker Image ๋„ฃ๊ธฐ

๋“ฑ๋กํ•˜๋ ค๋Š” ๋„์ปค ์ด๋ฏธ์ง€์˜ ํƒœ๊ทธ(๋ณ„์นญ)์„ ์•„๊นŒ ๋งŒ๋“ค์—ˆ๋˜ Repo์ด๋ฆ„์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

docker tag ํ˜„์žฌ์ด๋ฏธ์ง€์ด๋ฆ„ DockerRepo์ด๋ฆ„

 

DockerRepo์ด๋ฆ„์˜ ๊ฒฝ์šฐ ๋„ค์ž„์ŠคํŽ˜์ด์Šค/Repository์ด๋ฆ„ ์˜ ํ˜•ํƒœ๋กœ ๋„ฃ์–ด์ฃผ๋ฉด๋œ๋‹ค.

๋‚˜์˜ ๊ฒฝ์šฐ sunhokimdev/hello-world-docker ๊ฐ€ ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  docker image ls๋กœ ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€ ๋ชฉ๋ก์„ ํ™•์ธํ•ด๋ณด๋ฉด tag๋กœ ๋งŒ๋“  ๋ณ„์นญ์˜ ์ด๋ฏธ์ง€๊นŒ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

IMAGE ID๊ฐ€ ๊ฐ™์€ ๋„์ปค ์ด๋ฏธ์ง€๊ฐ€ ๋‘ ๊ฐœ ์กด์žฌํ•œ๋‹ค.

 

๋ณ„์นญ๋งŒ ๋‹ค๋ฅด์ง€ ๋˜‘๊ฐ™์€ ๋„์ปค ์ด๋ฏธ์ง€๋ผ๋Š” ๊ฒƒ์„ ์žŠ์œผ๋ฉด ์•ˆ๋œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ํ„ฐ๋ฏธ๋„์—์„œ Docker hub์— ๋กœ๊ทธ์ธํ•œ ๊ณ„์ •์„ ๋“ฑ๋กํ•ด์•ผํ•œ๋‹ค.

docker login --username=๋„์ปคํ—ˆ๋ธŒ๊ณ„์ •์ด๋ฆ„

 

ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ๋‚˜์˜ค๋‹ˆ, ๋„์ปค ํ—ˆ๋ธŒ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋กœ๊ทธ์ธํ•˜๋ฉด ๋œ๋‹ค.

 

์ •์ƒ์ ์œผ๋กœ ๋กœ๊ทธ์ธ๋œ ๋ชจ์Šต

์ด์ œ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋„์ปค ํ—ˆ๋ธŒ์— ๋„ฃ์œผ๋ฉด ๋œ๋‹ค!

 

docker push DockerRepo์ด๋ฆ„

 

DockerRepo์ด๋ฆ„์€ ์•„๊นŒ tag ๋ช…๋ น์–ด๋กœ ๋งŒ๋“  ๋„์ปค ์ด๋ฏธ์ง€ ๋ณ„์นญ๊ณผ ๊ฐ™์œผ๋ฏ€๋กœ ๊ทธ ์ด๋ฏธ์ง€๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.

 

๋‚ด Docker ์ด๋ฏธ์ง€๋ฅผ ๋„์ปค ํ—ˆ๋ธŒ์— ๋„ฃ์—ˆ๋‹ค!

 

์ด์ œ ๋„์ปค ํ—ˆ๋ธŒ ์›น์—์„œ ํ™•์ธํ•ด๋ณด๋ฉด.. ์ •์ƒ์ ์œผ๋กœ ๋“ค์–ด๊ฐ„ ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

ํ•˜๋‹จ์„ ๋ณด๋ฉด ๋ฆฌ๋ˆ…์Šค๊ฐ€ ๋“ค์–ด๊ฐ„๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

5. ๋‚ด Docker Image๊ฐ€ ์ •์ƒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ

 

๋‹ค์Œ์œผ๋กœ ๊ฐ€์ƒ ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ ๋‚ด ๋„์ปค ์ด๋ฏธ์ง€๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

๋„์ปค๊ฐ€ ์„ค์น˜๋œ ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์„ 4์‹œ๊ฐ„๋™์•ˆ ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์ดํŠธ๊ฐ€ ์žˆ๋‹ค.

๋‚ด ๋„์ปค ํ—ˆ๋ธŒ ๊ณ„์ •๊ณผ ์—ฐ๊ฒฐํ•˜๋ฉด ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

https://labs.play-with-docker.com/

 

Play with Docker

Play with Docker A simple, interactive and fun playground to learn Docker Login

labs.play-with-docker.com

 

๋กœ๊ทธ์ธํ•˜๊ณ  Start ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด์„œ ์ง„์ž…ํ•˜๋ฉด, ์™ผ์ชฝ ํƒญ์—์„œ ADD NEW INSTANCE ๋ฒ„ํŠผ์œผ๋กœ ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์ž.

๊ทธ๋Ÿฌ๋ฉด ์•„๋ž˜ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ๊ฒ€์€ ํ„ฐ๋ฏธ๋„์ด ๋‚˜์˜จ๋‹ค.

 

์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

 

ํ„ฐ๋ฏธ๋„์—์„œ ๋‚ด ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์™€๋ณด์ž.

 

docker pull DockerRepo์ด๋ฆ„

 

์ƒ์„ฑํ–ˆ๋˜ ๋„์ปค Repo์ด๋ฆ„์œผ๋กœ ๊ฐ€์ ธ์˜ค๋ฉด ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  docker run DockerRepo์ด๋ฆ„ ์œผ๋กœ ๋™์ž‘์„ ํ™•์ธํ•ด๋ณด๋ฉด..

 

Hello Docker! ๊ฐ€ ๋ณด์ธ๋‹ค.

 

์ •์ƒ์ ์œผ๋กœ ๊ตฌ๋™๋œ ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค!

 


 

๋„์ปค์—์„œ ์šฐ๋ถ„ํˆฌ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

 

์šฐ๋ถ„ํˆฌ๋ฅผ ๋„์ปค์— ์„ค์น˜ํ•ด๋ณด๊ณ  ์‚ฌ์šฉํ•ด๋ณด๋Š” ์‹ค์Šต์„ ํ•ด๋ณด์•˜๋‹ค.

์šฐ๋ถ„ํˆฌ๋Š” ๊ณต์‹ ์ด๋ฏธ์ง€๋ผ ๋”ฐ๋กœ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋‚˜ ๋ฒ„์ „์ด๋ฆ„์ด ์—†์–ด์„œ ๊ทธ๋ƒฅ ubuntu ํ•˜๋ฉด ์•Œ์•„๋“ฃ๋Š”๋‹ค.

 

docker run ubuntu # ์šฐ๋ถ„ํˆฌ ์„ค์น˜
docker ps - a # ๋„์ปค ํ™•์ธ ๋ช…๋ น์–ด, -a ๋Š” ์ฃฝ์€ ๋„์ปค๊นŒ์ง€ ํ™•์ธํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.
docker run -it ubuntu # ์‰˜์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์šฐ๋ถ„ํˆฌ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ์•ˆ์œผ๋กœ ์ง„์ž…

apt update # apt๋ฅผ ๋จผ์ € ์—…๋ฐ์ดํŠธํ•ด์•ผ nano๊ฐ€ ์„ค์น˜๋œ๋‹ค.
apt install nano # nano ์„ค์น˜

 

 

nano๊ฐ€ ์„ค์น˜๋˜๊ณ , nano ๋ฅผ ์ž…๋ ฅํ•ด์„œ ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ด๋ณธ๋‹ค.

 

nano๊ฐ€ ์‹คํ–‰๋œ ๋ชจ์Šต

 

์ •์ƒ์ ์œผ๋กœ nano๊ฐ€ ๋™์ž‘ํ•˜๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

nano๋Š” apt remove nano๋กœ ์‚ญ์ œ ๊ฐ€๋Šฅํ•˜๋‹ค.

 


 

๋„์ปค์—์„œ MySQL ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด MySQL 8.0์„ ๋‹ค์šด๋กœ๋“œ๋ฐ›๊ณ , ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

docker pull mysql/mysql-server:8.0

docker run --name=mysql_container mysql/mysql-server:8.0

 

--name ์˜ต์…˜์„ ์ฃผ๋ฉด Container ID๋ฅผ ๋Œ€์‹ ํ•  ์ด๋ฆ„์„ ์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

๋’ค์—์„œ logs์™€ exec ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ท€์ฐฎ๊ฒŒ Container ID ํ™•์ธ์—†์ด ์ƒˆ๋กœ ๋งŒ๋“  ์ด๋ฆ„์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 

MySQL์„ ์ง์ ‘ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— MySQL์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ํ•„์š”ํ•œ๋ฐ, ์ด๊ฒŒ ๋กœ๊ทธ์ชฝ์— ์ €์žฅ๋˜์–ด ์žˆ์–ด์„œ ์ง์ ‘ ํ™•์ธํ•ด์•ผํ•œ๋‹ค.

 

docker logs mysql_container 2>&1 | grep GENERATED

 

์œˆ๋„์šฐ์˜ ๊ฒฝ์šฐ grep์ด ์•„๋‹Œ findstr ์„ ๋Œ€์‹  ๋„ฃ์–ด์ฃผ๋ฉด ์•Œ์•„์„œ ์ฐพ์•„์˜จ๋‹ค.

 

PASSWORD: ๋’ค์ชฝ์˜ ๋ฌธ์ž๋“ค์„ ๋ณต์‚ฌํ•˜์ž

 

๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณต์‚ฌํ•ด๋‘๋ฉด ์•„๋ž˜์—์„œ ๋กœ๊ทธ์ธํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

 

-uroot ์˜ต์…˜์œผ๋กœ ๋ฃจํŠธ ์œ ์ €๋กœ mysql ์‰˜์— ์ ‘์†ํ•œ๋‹ค.

-p๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ ๊ฒ ๋‹ค๋Š” ์˜ต์…˜์ด๋‹ค. ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ ์œผ๋ผ๊ณ  ๋‚˜์˜ค๋ฉด ๋ณต์‚ฌํ•ด๋‘์—ˆ๋˜ ๋ฌธ์žฅ์„ ๋„ฃ์–ด ๋กœ๊ทธ์ธํ•˜๋ฉด ๋œ๋‹ค.

docker exec -it mysql_container mysql -uroot -p

 

mysql์— ์ ‘์†ํ•œ ๋ชจ์Šต

 

mysql์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

 

๋‹ค์Œ์—๋Š” ์ด ๋„์ปค์•ˆ์˜ MySQL์„ ์ด์šฉํ•ด์„œ ์ž‘์—…ํ•ด๋ณด๋Š” ์‹ค์Šต์„ ํ•ด๋ณธ๋‹ค.