๐Ÿณ 1. Docker Hub๋กœ Docker Image ๊ณต์œ 

docker hub์— docker image๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์šฐ์„  `docker login` ์„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค. ๊ทธ์ „์— docker hub์—์„œ token์„ ๋ฐœ๊ธ‰๋ฐ›๋Š”๋‹ค.

https://hub.docker.com/ ์— ๋กœ๊ทธ์ธํ•œ ํ›„ [Account Setting]์„ ๋ˆ„๋ฅธ๋‹ค.

์ดํ›„์— [Security] - [Personal access tokens]์„ ํด๋ฆญ

 

 

๊ทธ๋‹ค์Œ [Generate new token]์„ ๋ˆ„๋ฅธ๋‹ค.

 

 

token์˜ ์ด๋ฆ„๊ณผ permission์„ ์„ค์ •ํ•ด ์ค€๋‹ค.

 

์ƒ์„ฑ์ด ์™„๋ฃŒ๋˜๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•œ๋‹ค. ์•„๋ž˜ Access token์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ์กฐ์‹ฌํ•œ๋‹ค.

docker login -u [Username]
[Access Token]

 

 

๋กœ๊ทธ์ธ์ด ์™„๋ฃŒ๋˜๋ฉด ํ•ด๋‹น ํ„ฐ๋ฏธ๋„์—์„œ docker hub์— ์ด๋ฏธ์ง€๋ฅผ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

 

Docker image๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€

2024.09.30 - [Programming/Docker] - Docker ์ด๋ฏธ์ง€ ๋งŒ๋“ค๊ธฐ

์ฐธ๊ณ .

 

์ด์ œ ์—…๋กœ๋“œํ•  docker ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์•„๋ž˜์—์„œ “jinwoohong”์—๋Š” ์ž์‹ ์˜ docker username์„ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.

 

1. Dockerfile build

์•„๋ž˜์™€ ๊ฐ™์€ dockerfile์„ ์ž‘์„ฑํ•œ ํ›„์— build ํ•ด์ค€๋‹ค.

FROM ubuntu:20.04
RUN apt update && apt install -y python3
WORKDIR /var/www/html
COPY ["index.html", "."]
CMD ["python3", "-u", "-m", "http.server"]

 

docker build -t jinwoohong/webserver:1.0 .

 

2. Docker Image push

build ์™„๋ฃŒ ํ›„์— `push` ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด docker hub์— image๋ฅผ ์˜ฌ๋ฆฐ๋‹ค.

docker push jinwoohong/webserver:1.0

 

docker hub์— ๊ฐ€๋ณด๋ฉด ์„ฑ๊ณต์ ์œผ๋กœ ์˜ฌ๋ผ๊ฐ„ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

 

์ด์ œ `docker pull jinowoohong/webserver` ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ•ด๋‹น image๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์‹คํ–‰ํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค. docker hub์— image๋ฅผ ์—…๋กœ๋“œํ•  ๋•Œ pubilc์—๋Š” ์ œํ•œ์ด ์—†์ง€๋งŒ private๋Š” 1๊ฐœ๊นŒ์ง€๋งŒ ์ง€์›ํ•œ๋‹ค.

 

๐Ÿฑ 2. Github๋กœ Docker Image ๊ณต์œ 

Docker hub์— Docker image๋ฅผ ๊ณต์œ ํ•  ๋•Œ public์€ ๋ฌด์ œํ•œ์ด์ง€๋งŒ private๋Š” 1๊ฐœ๋กœ ์ œํ•œ์ ์ด๋‹ค. (์œ ๋ฃŒ ๊ณ„์ •์„ ์“ฐ๋ฉด ๋ฌด์ œํ•œ) ํ•˜์ง€๋งŒ Github package registry์„ ํ†ตํ•ด ๋ฌด์ œํ•œ์œผ๋กœ private๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

1. Container Registry์— ์ธ์ฆ

์šฐ์„  Container Registry์— ์ธ์ฆ์„ ํ•ด์•ผ ํ•œ๋‹ค.

https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry

 

Working with the Container registry - GitHub Docs

You can store and manage Docker and OCI images in the Container registry, which uses the package namespace https://ghcr.io.

docs.github.com

 

 

1. [Github] - [Setting]์œผ๋กœ ์ด๋™

 

2. ์ขŒ์ธก์— [Developer setting]์œผ๋กœ ์ด๋™

 

 

3. [Tokens(classic)] - [Generate new token(classic]์œผ๋กœ ์ด๋™

 

4. token ์ด๋ฆ„ ์„ค์ • ๋ฐ [write:packages]์™€ [delete:packages] ์ฒดํฌ ํ›„ ๋ฐ‘์œผ๋กœ ๋‚ด๋ ค์„œ ์ƒ์„ฑ

 

 

5. ์ƒ์„ฑ์ด ์™„๋ฃŒ๋˜๋ฉด Access token์ด ๋ฐœ๊ธ‰๋œ ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํ•ด๋‹น ํ‚ค๋ฅผ ๋”ฐ๋กœ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ๋ฉ”๋ชจํ•ด ๋†“๋Š”๋‹ค.(์™ธ๋ถ€์— ๊ณต์œ  X)

 

6. Access Token ๋“ฑ๋ก

Ubuntu๋‚˜ MacOS์ผ ๊ฒฝ์šฐ Terminal์„ ์‹คํ–‰ํ•˜๊ณ , Window์ผ ๊ฒฝ์šฐ git bash ์‹คํ–‰

export CR_PAT=[์œ„์—์„œ ๋ณต์‚ฌํ•œ ํ† ํฐ]

 

$ echo $CR_PAT | docker login ghcr.io -u dev-jinwoohong --password-stdin
> Login Succeeded

 

๊นŒ์ง€ ์™„๋ฃŒํ–ˆ๋‹ค๋ฉด docker image๋ฅผ push ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด์ œ ์—…๋กœ๋“œํ•  docker ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์•„๋ž˜์—์„œ “dev-jinwoohong”์—๋Š” ์ž์‹ ์˜ Git hub ์ด๋ฆ„์„ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.

 

2. Dockerfile build

์•„๋ž˜์™€ ๊ฐ™์€ dockerfile์„ ์ž‘์„ฑํ•œ ํ›„์— build ํ•ด์ค€๋‹ค.

FROM ubuntu:20.04
RUN apt update && apt install -y python3
WORKDIR /var/www/html
COPY ["index.html", "."]
CMD ["python3", "-u", "-m", "http.server"]

 

docker build -t ghcr.io/dev-jinwoohong/webserver:1.0 .

 

 

3. Docker Image push

build ์™„๋ฃŒ ํ›„์— `push` ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด Github container registry์— image๋ฅผ ์˜ฌ๋ฆฐ๋‹ค.

docker push ghcr.io/dev-jinwoohong/webserver:1.0

 

 

[packages]์— ๊ฐ€๋ณด๋ฉด ์ •์ƒ์ ์œผ๋กœ push ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, package settings์—์„œ Github repository๋ž‘ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฐ๊ฒฐํ•œ ํ›„ ํ•ด๋‹น repo๋กœ ์ด๋™ํ•˜๋ฉด Packages์— ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

Packages์— push ํ•˜๋ฉด ์ฒ˜์Œ์—๋Š” private์œผ๋กœ ๋˜์ง€๋งŒ ์‚ฌ์šฉ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ public์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ“„ ์ฐธ๊ณ ์ž๋ฃŒ

https://www.youtube.com/watch?v=cqlY1Hc70H0

 

 

๐ŸŒค๏ธ ๋งˆ์น˜๋ฉฐ

์•„๋Š” ๋งŒํผ ๋ณด์ธ๋‹ค”๋ผ๋Š” ๋ง์ฒ˜๋Ÿผ ์ˆ˜๋งŽ์€ Github Repository๋ฅผ ๋ดค์ง€๋งŒ Packages๊ฐ€ ๋ญ”์ง€ ๊ด€์‹ฌ์„ ๊ฐ€์ง„ ์ ์€ ์—†๋‹ค. ์ด๋ฒˆ์„ ๊ณ„๊ธฐ๋กœ ๋‚˜๋„ Repository๋ฅผ ์˜ฌ๋ฆด ๋•Œ Packages์— Docker image๋ฅผ ํ•จ๊ป˜ ์˜ฌ๋ ค๋ณด๋„๋ก ํ•ด์•ผ๊ฒ ๋‹ค.