๐ŸŒฑdockerhub private registry ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

๊น€์ข…์™„ยท2022๋…„ 11์›” 24์ผ
1

Docker์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ

Docker์˜ ๊ณ ์œ ํ•œ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋Š” Docker ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋™์ผํ•œ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

Dockerhub registry๋ž€?

  • ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” stateless, ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚œ ์„œ๋ฒ„ ์ธก ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ, ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” ์˜คํ”ˆ ์†Œ์Šค๋‹ค.
  • private docker registry ์„ค์ •์€ ๋ฌด๋ฃŒ์ด๋ฉฐ, ๊ฐœ์ธ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ์ด๋ฏธ์ง€์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ชจ๋“  ๋ช…๋ น์€ ๋‹จ์ˆœํ•˜๋ฉฐ ๋„์ปค ํ—ˆ๋ธŒ์˜ ๋ช…๋ น๊ณผ ๊ฑฐ์˜ ๋™์ผํ•˜๋‹ค.

์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  • ์–ด๋””์— ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ• ์ง€ ์—„๊ฒฉํ•˜๊ฒŒ ๊ด€๋ฆฌํ•œ๋‹ค.
  • ์ด๋ฏธ์ง€ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ์™„์ „ํžˆ ์†Œ์œ ํ•œ๋‹ค.
  • ์ด๋ฏธ์ง€ ์ €์žฅ ๋ฐ ๋ฐฐํฌ๋ฅผ ์‚ฌ๋‚ด ๊ฐœ๋ฐœ ์›Œํฌํ”Œ๋กœ์šฐ์— ๊ธด๋ฐ€ํ•˜๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์‚ฌ์šฉํ•˜๊ธฐ ์ „ ์„ค์ •

vi /etc/docker/daemon.json

๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค.

{
    "insecure-registries":[
        "localhost:5000"
    ]
}

ํ•ด๋‹น ๋ณ€๊ฒฝ์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ docker Daemon ํŒŒ์ผ์„ ๋ฆฌ๋กœ๋“œ ํ•ด์•ผํ•œ๋‹ค.

sudo systemctl daemon-reload

์‚ฌ์šฉ์„ ์œ„ํ•œ ๋ช…๋ น์–ด

private resistry๋ฅผ ์‹คํ–‰์‹œํ‚ต๋‹ˆ๋‹ค.

docker run -d -p 5000:5000 --restart=always --name registry registry:2

Private Registry์— ์ด๋ฏธ์ง€ push ํ•˜๊ธฐ

ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด์„œ centos image๋ฅผ ๋‹ค์šด๋กœ๋“œํ•œ๋‹ค.

docker pull centos

์ด๋ฏธ์ง€์— ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

docker tag centos:latest localhost:5000/baeldung-centos

์ด๋ฏธ์ง€๋ฅผ push ํ•œ๋‹ค.

docker push localhost:5000/baeldung-centos

๋งˆ์ง€๋ง‰์œผ๋กœ ๋„์ปค ์ด๋ฏธ์ง€๊ฐ€ ์ž˜ ๋‹ค์šด๋กœ๋“œ ๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

docker pull localhost:5000/baeldung-centos

Private **Registry**๋ฅผ ์œ„ํ•ด์„œ ์ธ์ฆ ์ถ”๊ฐ€ํ•˜๊ธฐ

๋งŒ์•ฝ ์™ธ๋ถ€์— ํ•จ๋ถ€๋กœ ๋…ธ์ถœ ๋˜๋ฉด ์•ˆ๋˜๋Š” ์ด๋ฏธ์ง€ ๊ฐ™์€ ๊ฒฝ์šฐ ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿด๊ฒฝ์šฐ registry์— ์ ‘๊ทผํ•  ๋•Œ ์ธ์ฆ์ด ํ•„์š”ํ•˜๋ฉฐ htpasswd ์ธ์ฆ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ € Docker ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ž๊ฒฉ ์ฆ๋ช…์„ ์ €์žฅํ•  ๋ณ„๋„์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

mkdir -p Docker_registry/auth

์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด์„œ htpasswd ๋ฅผ ํ†ตํ•ด ์ธ์ฆ ๋ฐ›์€ ์œ ์ €๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๋‹น ์œ ์ €์— ๊ด€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋Š” auth/htpasswd ํŒŒ์ผ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

cd Docker_registry && docker run \
> --entrypoint htpasswd \
> httpd:2 -Bbn baeldung-user baeldung > auth/htpasswd

์ด์ œ ์‹คํ–‰ํ•œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

docker stop ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ด๋ฏธ์ง€ & docker rm ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ด๋ฏธ์ง€

๋ณด์•ˆ์ด ์ ์šฉ๋œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

docker run -itd \
  -p 5000:5000 \
  --name registry \
  -v "$(pwd)"/auth:/auth \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
  registry

๋กœ๊ทธ์ธ ๋ฐฉ๋ฒ•

docker login  localhost:5000 -u baeldung-user -p baeldung

์™ธ๋ถ€์—์„œ ๋กœ๊ทธ์ธํ•˜๊ธฐ ์œ„ํ•œ ์„ค์ •

vi /etc/docker/daemon.json
{

    "insecure-registries": ["์„œ๋ฒ„IP:5000"]

}

daemon.json ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์˜€๋‹ค๋ฉด, ๋„์ปค๋ฅผ ์žฌ์‹œ์ž‘ ํ•œ๋‹ค.

systemctl restart docker

๋งŒ์•ฝ systemctl์ด ์•ˆ๋˜๋ฉด ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ž

service docker restart

์ฐธ์กฐ

https://docs.docker.com/registry/

https://www.baeldung.com/ops/docker-private-registry

profile
๊ฐœ๋ฐœ์— ์žฌ๋ฏธ๋ฅผ ๋Š๋ผ๋ฉฐ ๊พธ์ค€ํžˆ ์„ฑ์žฅํ•˜๋Š” ๊ฐœ๋ฐœ์ž ๊น€์ข…์™„ ์ž…๋‹ˆ๋‹ค.

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