๐ŸŽ‰ berenickt ๋ธ”๋กœ๊ทธ์— ์˜จ ๊ฑธ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๐ŸŽ‰
DevOps
Docker
06-Docker hub, push, pull

1. Docker hub ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋งŒ๋“ค๊ธฐ

ํ”„๋กœ๊ทธ๋žจ์„ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค์–ด๋‘๋ฉด ์ด์ œ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์—์„œ ์‰ฝ๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทผ๋ฐ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ๋กœ ๋ณด๋‚ด๋Š” ๋ฒ•์€ ์•ˆ์•Œ๋ ค์คฌ๋Š”๋ฐ์š”?

์‹ค์€ USB๋กœ ์ „๋‹ฌํ•˜๋“  ์ด๋ฉ”์ผ๋กœ ์ „๋‹ฌํ•˜๋“  ์•„๋ฌด๋ ‡๊ฒŒ๋‚˜ ํ•ด๋„ ๋˜๋Š”๋ฐ, ๋ณดํ†ต์€ ์ด๋ฏธ์ง€ ํ˜ธ์ŠคํŒ…ํ•ด์ฃผ๋Š” ์„œ๋น„์Šค์— ์—…๋กœ๋“œํ•˜๊ณ  ํ•„์š”ํ•  ๋•Œ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š”๊ฒŒ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. docker hub ์ด๋Ÿฐ ๊ณณ์ด๋‚˜ AWS ECR ์ด๋Ÿฐ ๊ณณ๋“ค์„ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š”๋ฐ, ์‰ฝ๊ฒŒ ๋ฌด๋ฃŒ๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” docker hub์— ์˜ฌ๋ ค๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค.

Docker hub ์‚ฌ์ดํŠธ์— ๋ฐฉ๋ฌธํ•ด๋ด…์‹œ๋‹ค. (hub.docker.com)

docker_6-1

โ–ฒ ๊ฐ€์ž…ํ•˜๊ณ  ๋กœ๊ทธ์ธํ•ด๋ณด๋ฉด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฒ„ํŠผ์ด ์–ด๋”˜๊ฐ€์— ์žˆ์„ํ…๋ฐ ๋ˆŒ๋Ÿฌ๋ด…์‹œ๋‹ค. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋Š” โ€œ์ด๋ฏธ์ง€ ๋ณด๊ด€์šฉ ํด๋”โ€์ž…๋‹ˆ๋‹ค.

docker_6-2

โ–ฒ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ด๋ฆ„ ์ž‘๋ช…ํ•˜๊ณ  public์ด ๋ฌด๋ฃŒ๋ผ ๊ทธ๊ฑธ๋กœ ์„ ํƒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. (๋Œ€์‹  public์€ ์•„๋ฌด๋‚˜ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค) ๊ทธ๋ฆฌ๊ณ  ์˜ค๋ฅธ์ชฝ์— ์ด๋ฏธ์ง€ ์—…๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ• ๊ทธ๋Œ€๋กœ ๋”ฐ๋ผํ•˜๋ฉด ์—…๋กœ๋“œ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.


2. ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ๋Š” docker push

์ €๋ฒˆ์— ๋งŒ๋“  ์ด๋ฏธ์ง€ ํ•˜๋‚˜๋ฅผ ์ €๊ธฐ ๋ฐฉ๊ธˆ๋งŒ๋“  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์˜ฌ๋ ค๋ด…์‹œ๋‹ค. ์—†์œผ๋ฉด ์ด๋ฏธ์ง€ ์•„๋ฌด๊ฑฐ๋‚˜ ๋„์ปคํ—ˆ๋ธŒ์—์„œ ๋‹ค์šด๋ฐ›์•„์„œ ์˜ฌ๋ ค๋ด…์‹œ๋‹ค.

1
# docker tag ์ด๋ฏธ์ง€์ด๋ฆ„:ํƒœ๊ทธ๋ช… ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์ด๋ฆ„:ํƒœ๊ทธ๋ช…์ž‘๋ช…
2
$ docker tag nodeserver:v1 seungwoo99/myserver:v1
3
4
# docker push ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์ด๋ฆ„:ํƒœ๊ทธ๋ช…์ž‘๋ช…
5
docker push seungwoo99/myserver:v1

์ผ๋‹จ ์ด๋ฏธ์ง€ ์˜ฌ๋ฆฌ๋ ค๋ฉด ํ„ฐ๋ฏธ๋„ ๋ช…๋ น์–ด๊ฐ€ 2๊ฐœ ํ•„์š”ํ•œ๋ฐ,

  1. ์ฒซ์งธ๋Š” ์ผ๋‹จ ์ด๋ฏธ์ง€ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๋ช…๋ น์–ด๊ณ 
  2. ๋‘๋ฒˆ์งธ๊ฐ€ ์˜ฌ๋ฆฌ๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ์ด๋ฆ„๋ถ€ํ„ฐ ๋ฐ”๊ฟ”์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ์›๋ž˜ ์ด๋ฏธ์ง€ ์ด๋ฆ„์— ์ •ํ™•ํžˆ ๊ทธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ด๋ฆ„์ด ๋“ค์–ด๊ฐ€์•ผ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

docker_6-3

โ–ฒ ์ €๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ด๋ฆ„์„ codingapple/myserver ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์—

1
$ docker tag nodeserver:1 codingapple/myserver:1
2
$ docker push codingapple/myserver:1

์ด๋Ÿฐ ์‹์œผ๋กœ ์ด๋ฏธ์ง€ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ์˜ฌ๋ ค๋ดค์Šต๋‹ˆ๋‹ค. ๋ญ”๊ฐ€ ์•ˆ๋œ๋‹ค๊ณ  ๋‚˜์˜ค๋ฉด ํ„ฐ๋ฏธ๋„์— docker login๋ถ€ํ„ฐ ์ž…๋ ฅํ•ด์„œ ๋กœ๊ทธ์ธ ํ•˜๋ผ๋Š”๊ฑฐ ํ•ด๋ณด์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

docker_6-4

โ–ฒ ์ฐธ๊ณ ๋กœ docker tag ์ด์šฉํ•ด์„œ ์ด๋ฏธ์ง€ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋ฉด, ์ด๋ฏธ์ง€ ๋ชฉ๋ก์— ์ด๋ฏธ์ง€๊ฐ€ ํ•˜๋‚˜ ๋” ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ญ”๊ฐ€ ์šฉ๋Ÿ‰๋„ 2๋ฐฐ ์ฐจ์ง€ํ•˜๊ฒŒ ๋˜๊ณ  ๊ทธ๋Ÿด ๊ฒƒ ๊ฐ™์€๋ฐ ID๊ฐ€ ๋™์ผํ•˜๋ฉด ์‹ค์€ ๊ฐ™์€ ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค. ์›๋ž˜ ์ด๋ฏธ์ง€๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ด๋ฆ„์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ๋ชจ๋“  ์ด๋ฏธ์ง€ ์ด๋ฆ„์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ณณ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.


3. ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ๋Š” docker pull

1
docker pull ์ด๋ฏธ์ง€๋ช…:ํƒœ๊ทธ

์ด๋ฏธ์ง€๋ฅผ docker hub์—์„œ ๋‚ด๋ ค๋ฐ›์œผ๋ ค๋ฉด docker pull ๋ช…๋ น์–ด๋ฅผ ์“ฐ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์‹ค์€ docker desktop์—์„œ๋„ ์˜ฌ๋ฆฌ๊ณ  ๋‚ด๋ ค๋ฐ›์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ทธ๋Ÿฐ ์‹์œผ๋กœ ์จ๋ณด์…”๋„ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก Q. ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ๋œ๊ฑฐ ์˜ฌ๋ฆฌ๊ณ ์‹ถ์œผ๋ฉด?

ํƒœ๊ทธ๋ช…์„ ๋‹ค๋ฅด๊ฒŒ ์ž‘์„ฑํ•ด์„œ ์ด๋ฏธ์ง€ ์ƒˆ๋กœ ๋นŒ๋“œํ•˜๊ณ  ์˜ฌ๋ฆฌ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก Q. ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ์ด๋ฏธ์ง€๋„ ์—…๋กœ๋“œํ•˜๊ณ  ์‹ถ์œผ๋ฉด?

e.g. ์„œ๋ฒ„ ๋‹ด์€ ์ด๋ฏธ์ง€, ํ”„๋ก ํŠธ์—”๋“œ ๋‹ด์€ ์ด๋ฏธ์ง€, DB ๋‹ด์€ ์ด๋ฏธ์ง€ ์ด๋Ÿฐ๊ฒŒ ์žˆ์œผ๋ฉด, ๊ฐ๊ฐ ์–ด๋””์— ์—…๋กœ๋“œํ•˜๋Š”๊ฒŒ ์ข‹๊ฒ ์Šต๋‹ˆ๊นŒ.

  • ์ด๋Ÿฐ ๊ฒฝ์šฐ์—” ๊ฐ๊ฐ ๋ณ„๋„์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ฑฐ๊ธฐ์— ์—…๋กœ๋“œํ•˜๋Š” ๊ฒฝ์šฐ๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค.
  • ๊ทผ๋ฐ ๊ท€์ฐฎ์•„์„œ ํ˜น์€ private ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ํ•˜๋‚˜๊ฐ€์ง€๊ณ  ๊ณ„์† ์“ฐ๊ณ  ์‹ถ์–ด์„œ,
    • ํ•˜๋‚˜์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ํƒœ๊ทธ๋ช…๋งŒ ๋‹ค๋ฅด๊ฒŒ ํ•ด์„œ ์‘ค์…”๋„ฃ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํ•˜์ง€๋งŒ ์ด๋ฏธ์ง€ ์ข…๋ฅ˜๋งˆ๋‹ค ๋ณ„๋„์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š”๊ฒŒ ๊น”๋”ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก cf. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋งŒ๋“ค ๋•Œ private ๋ง๊ณ  public ์œผ๋กœ ๋งŒ๋“ค๋ฉด ์•„๋ฌด๋‚˜ ์ด๊ฑธ ๋‹ค์šด๋ฐ›์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ข€ ๋ฏผ๊ฐํ•œ ๋‚ด์šฉ์ด ๋“ค์–ด์žˆ๋Š” ๊ฒƒ๋“ค์€ private ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์˜ฌ๋ ค๋‘์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ private ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋Š” ๊ณ„์ •๋งˆ๋‹ค 1๊ฐœ๋งŒ ์ƒ์„ฑ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.