Docker์šฉ Artifact Registry์— ๋Œ€ํ•œ ์ธ์ฆ ๊ตฌ์„ฑ

์ด ํŽ˜์ด์ง€์—์„œ๋Š” Artifact Registry Docker ์ €์žฅ์†Œ์— ์ธ์ฆํ•˜๋„๋ก Docker๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Cloud Build ๋˜๋Š” Google Cloud Google Kubernetes Engine ๋ฐ Cloud Run๊ณผ ๊ฐ™์€ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ธ์ฆ์„ ๊ตฌ์„ฑํ•  ํ•„์š”๋Š” ์—†์ง€๋งŒ ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

  1. Google Cloud CLI๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜ ํ›„ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ Google Cloud CLI๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.

    gcloud init

    ์™ธ๋ถ€ ID ๊ณต๊ธ‰์—…์ฒด (IdP)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋จผ์ € ์ œํœด ID๋กœ gcloud CLI์— ๋กœ๊ทธ์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  2. (์„ ํƒ์‚ฌํ•ญ) cloud CLI ๋ช…๋ น์–ด์˜ ๊ธฐ๋ณธ๊ฐ’์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  3. ์ธ์ฆ์— ์‚ฌ์šฉ ์ค‘์ธ ๊ณ„์ •์— Artifact Registry์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ๊ณ„์ •์ด ์•„๋‹Œ ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  4. Docker๊ฐ€ ์•„์ง ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. Docker๋Š” Cloud Shell์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  5. Docker์—๋Š” ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Linux ๋˜๋Š” Windows์—์„œ Docker ๋ณด์•ˆ ๊ทธ๋ฃน์— Docker ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์‚ฌ์šฉ์ž๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. Docker Desktop์€ ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ ๋ฃจํŠธ ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰๋˜๋ฏ€๋กœ macOS์—์„œ๋Š” ์ด ๋‹จ๊ณ„๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    Linux

    Docker ๋ณด์•ˆ ๊ทธ๋ฃน์„ docker๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

          sudo usermod -a -G docker ${USER}
          

    Windows

    Docker ๋ณด์•ˆ ๊ทธ๋ฃน์„ docker-users๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž ๋ช…๋ น์–ด ํ”„๋กฌํ”„ํŠธ์—์„œ ์‚ฌ์šฉ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

            net localgroup docker-users DOMAIN\USERNAME /add
            

    ๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • DOMAIN์€ Windows ๋„๋ฉ”์ธ์ž…๋‹ˆ๋‹ค.
    • USERNAME์€ ์‚ฌ์šฉ์ž ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

    ๊ทธ๋ฃน ๋ฉค๋ฒ„์‹ญ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ ์šฉํ•˜๋ ค๋ฉด ๋กœ๊ทธ์•„์›ƒํ–ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ƒ ๋จธ์‹ ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋ฉค๋ฒ„์‹ญ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•˜๋ ค๋ฉด ๊ฐ€์ƒ ๋จธ์‹ ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ธ์ฆ ๋ฐฉ์‹ ์„ ํƒ

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ธ์ฆ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

gcloud CLI ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ
gcloud CLI์—์„œ ์ง์ ‘ Docker์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก Artifact Registry ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์ธ์ฆ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ ๋…๋ฆฝํ˜• ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ๋ณด๋‹ค ์†๋„๊ฐ€ ๋А๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋…๋ฆฝํ˜• Docker ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ
์ด ์˜ต์…˜์€ ๊ธฐ๋ณธ์ ์œผ๋กœ Google Cloud CLI๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ Docker์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. gcloud CLI ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ๋ณด๋‹ค ์ƒ๋‹นํžˆ ๋น ๋ฅด๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ธฐ๋ณธ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด(ADC)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ํ™˜๊ฒฝ์˜ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์ž๋™์œผ๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์•ก์„ธ์Šค ํ† ํฐ
์„œ๋น„์Šค ๊ณ„์ •์— ๋Œ€ํ•ด ๋‹จ๊ธฐ ์•ก์„ธ์Šค ํ† ํฐ์„ ์ƒ์„ฑํ•œ ํ›„ ์•”ํ˜ธ ์ธ์ฆ์„ ์œ„ํ•ด ํ† ํฐ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ† ํฐ์ด 60๋ถ„ ๋™์•ˆ๋งŒ ์œ ํšจํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ณด๋‹ค ์•ˆ์ „ํ•œ ์˜ต์…˜์ž…๋‹ˆ๋‹ค.
์„œ๋น„์Šค ๊ณ„์ • ํ‚ค
์„œ๋น„์Šค ๊ณ„์ •์˜ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž ๊ด€๋ฆฌํ˜• ํ‚ค-์Œ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋Š” ์žฅ๊ธฐ์ ์ด๋ฏ€๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ธ์ฆ ๋ฐฉ๋ฒ• ์ค‘ ๋ณด์•ˆ ์ˆ˜์ค€์ด ๊ฐ€์žฅ ๋‚ฎ์€ ์˜ต์…˜์ž…๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•˜๋ฉด ์•ก์„ธ์Šค ํ† ํฐ ๋˜๋Š” ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ์Šน์ธ๋˜์ง€ ์•Š์€ ์•ก์„ธ์Šค ์œ„ํ—˜์„ ์ค„์ด์„ธ์š”. ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๊ด€๋ฆฌ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Docker ๊ตฌ์„ฑ ํŒŒ์ผ์˜ ์ธ์ฆ ์„ค์ •

Docker๋Š” ๊ตฌ์„ฑ ํŒŒ์ผ config.json์— ์ธ์ฆ ์„ค์ •์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

  • Linux: ~/.docker/config.json
  • Windows: %USERPROFILE%\.docker\config.json

ํŒŒ์ผ์—๋Š” ์—ฌ๋Ÿฌ ์ธ์ฆ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฐœ๋ณ„ ์„น์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

credHelpers
์ธ์ฆ์„ ์œ„ํ•ด Docker ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ Artifact Registry๊ฐ€ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ ์„ค์ •์„ ํŒŒ์ผ์˜ credHelpers ์„น์…˜์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
auths
Docker๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ† ํฐ ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ์‚ฌ์šฉํ•ด์„œ ๋กœ๊ทธ์ธํ•˜๋Š” ๊ฒฝ์šฐ Docker๊ฐ€ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด์˜ base64 ์ธ์ฝ”๋”ฉ ๋ฒ„์ „์„ ํŒŒ์ผ์˜ auths ์„น์…˜์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
credStore
์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ์ €์žฅ์†Œ๋ฅผ ๊ตฌ์„ฑํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ์ €์žฅ์†Œ์˜ ์„ค์ •์ด ํŒŒ์ผ์˜ credStore ์„น์…˜์— ์žˆ์Šต๋‹ˆ๋‹ค.

Docker๊ฐ€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์—ฐ๊ฒฐํ•˜๋ฉด ๋จผ์ € ํ˜ธ์ŠคํŠธ์™€ ์—ฐ๊ด€๋œ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ config.json์—์„œ credHelpers ๋ฐ auths ์„น์…˜ ๋ชจ๋‘์— Artifact Registry ์„ค์ •์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด auths ์„น์…˜์˜ ์ •๋ณด๊ฐ€ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

gcloud CLI ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ

gcloud CLI ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ๋Š” ํ”„๋กœ์ ํŠธ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ˆ์ „ํ•œ ๋‹จ๊ธฐ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Google Cloud CLI๊ฐ€ ์„ค์น˜๋œ ๋ชจ๋“  ํ™˜๊ฒฝ์—์„œ Artifact Registry ํ˜ธ์ŠคํŠธ์— ์ธ์ฆํ•˜๋„๋ก Docker๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. Cloud Shell์—๋Š” Google Cloud CLI ๋ฐ Docker ์ตœ์‹  ๋ฒ„์ „์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

gcloud CLI ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. gcloud CLI ์„ธ์…˜์—์„œ ํ™œ์„ฑ ์‚ฌ์šฉ์ž ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ •์˜ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋กœ Docker๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ์—๋Š” gcloud CLI๊ฐ€ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋…๋ฆฝํ˜• ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ๋ณด๋‹ค ํ˜„์ €ํžˆ ๋А๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ3์ž ๋„๊ตฌ๊ฐ€ ํฌํ•จ๋œ ์ž๋™ํ™”๋œ ๋นŒ๋“œ ๋˜๋Š” ๋Œ€๊ทœ๋ชจ ๊ตฌ์„ฑ๋œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํ˜ธ์ŠคํŠธ๊ฐ€ ํฌํ•จ๋œ Docker ํด๋ผ์ด์–ธํŠธ์˜ ๊ฒฝ์šฐ ๋Œ€์‹  ๋…๋ฆฝํ˜• ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Artifact Registry์— ์ธ์ฆํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Docker ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์‚ฌ์šฉ์ž๋กœ gcloud CLI์— ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค.

    • ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋กœ ์ธ์ฆ์„ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

      gcloud auth login
      
    • ์„œ๋น„์Šค ๊ณ„์ • ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋กœ ์ธ์ฆ์„ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

      gcloud auth activate-service-account ACCOUNT --key-file=KEY-FILE
      

      ์žฅ์†Œ

      • ACCOUNT๋Š” USERNAME@PROJECT-ID.iam.gserviceaccount.com ํ˜•์‹์œผ๋กœ Artifact Registry์— ์‚ฌ์šฉํ•˜๋ ค๋Š” ์„œ๋น„์Šค ๊ณ„์ •์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Google Cloud ์ฝ˜์†”์˜ ์„œ๋น„์Šค ๊ณ„์ • ํŽ˜์ด์ง€์—์„œ ๋˜๋Š” gcloud iam service-accounts list ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค ๊ณ„์ • ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • KEY-FILE์€ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ํ‚ค ๋งŒ๋“ค๊ธฐ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Identity and Access Management(IAM) ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  1. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud auth configure-docker HOSTNAME-LIST
    

    ์—ฌ๊ธฐ์„œ HOSTNAME-LIST๋Š” ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ ๊ตฌ์„ฑ์— ์ถ”๊ฐ€ํ•  ์ €์žฅ์†Œ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์˜ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด us-west1 ๋ฐ asia-northeast1 ๋ฆฌ์ „์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud auth configure-docker us-west1-docker.pkg.dev,asia-northeast1-docker.pkg.dev
    

    ์ง€์ •๋œ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ด ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ ๊ตฌ์„ฑ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์ด ๋ช…๋ น์–ด๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์—ฌ ๊ตฌ์„ฑ์— ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ง€์›๋˜๋Š” ์ €์žฅ์†Œ ์œ„์น˜ ๋ชฉ๋ก์„ ๋ณด๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud artifacts locations list
    
  2. ์ด ๋ช…๋ น์–ด๋Š” ํ˜„์žฌ Docker ๊ตฌ์„ฑ์˜ credHelpers ์„น์…˜๊ณผ ์ง€์ •๋œ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์ถ”๊ฐ€ํ•œ ํ›„ ์—…๋ฐ์ดํŠธ๋œ ๊ตฌ์„ฑ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

    ๊ตฌ์„ฑ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ˆ˜๋ฝํ•˜๋ ค๋ฉด y๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋Š” ์‚ฌ์šฉ์ž ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

    • Linux: $HOME/.docker/config.json
    • Windows: %USERPROFILE%/.docker/config.json
  3. Docker๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ๊ฐ€ PATH ์‹œ์Šคํ…œ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. gcloud ๋ช…๋ น์–ด๊ฐ€ PATH ์‹œ์Šคํ…œ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋…๋ฆฝํ˜• ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ

๋…๋ฆฝํ˜• Docker ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ๋Š” gcloud CLI๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์‹œ์Šคํ…œ์—์„œ Artifact Registry์— ์ธ์ฆํ•˜๋„๋ก Docker๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. gcloud CLI ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ๋ณด๋‹ค ์ƒ๋‹นํžˆ ๋น ๋ฅด๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ธฐ๋ณธ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด(ADC)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ํ™˜๊ฒฝ์˜ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์ž๋™์œผ๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ํƒœ๊ทธ ์ง€์ • ๋˜๋Š” ๋‚˜์—ด๊ณผ ๊ฐ™์ด ์ด๋ฏธ์ง€ ๋‚ด๋ณด๋‚ด๊ธฐ ๋ฐ ๊ฐ€์ ธ์˜ค๊ธฐ์™€ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ œ3์ž ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ž๋™ํ™”๋œ ๋นŒ๋“œ ๋˜๋Š” ๋Œ€๋Ÿ‰์˜ ๊ตฌ์„ฑ๋œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํ˜ธ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Docker ํด๋ผ์ด์–ธํŠธ์˜ ๊ฒฝ์šฐ์— ์ด ์ธ์ฆ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋…๋ฆฝํ˜• Docker ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ๋Š” Artifact Registry ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€ Docker ๊ตฌ์„ฑ ํŒŒ์ผ์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด Docker ๋ช…๋ น์ค„ ๋„๊ตฌ docker๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Artifact Registry์™€ ์ง์ ‘ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Docker ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•:

  1. Docker ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์‚ฌ์šฉ์ž๋กœ ๋จธ์‹ ์— ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค.

  2. GitHub์—์„œ ๋…๋ฆฝํ˜• Docker ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

    ์›ํ•˜๋Š” ๊ฒฝ์šฐ curl ๋ช…๋ น์ค„ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    VERSION=2.1.29
    OS=linux  # or "darwin" for OSX, "windows" for Windows.
    ARCH=amd64  # or "386" for 32-bit OSs
    
    curl -fsSL "https://github.com/GoogleCloudPlatform/docker-credential-gcr/releases/download/v${VERSION}/docker-credential-gcr_${OS}_${ARCH}-${VERSION}.tar.gz" \
    | tar xz docker-credential-gcr \
    && chmod +x docker-credential-gcr && sudo mv docker-credential-gcr /usr/bin/
    
  3. Artifact Registry์™€ ์ƒํ˜ธ ์ž‘์šฉํ•  ๋•Œ Artifact Registry ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก Docker๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค(์ด ์ž‘์—…์€ ํ•œ ๋ฒˆ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค).

    docker-credential-gcr configure-docker --registries=HOSTNAME-LIST
    

    ์—ฌ๊ธฐ์„œ HOSTNAME-LIST๋Š” ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ ๊ตฌ์„ฑ์— ์ถ”๊ฐ€ํ•  ์ €์žฅ์†Œ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์˜ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด us-west1 ๋ฐ asia-northeast1 ๋ฆฌ์ „์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    docker-credential-gcr configure-docker --registries=us-west1-docker.pkg.dev,asia-northeast1-docker.pkg.dev
    

    ์ง€์ •๋œ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ด ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ ๊ตฌ์„ฑ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์ด ๋ช…๋ น์–ด๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์—ฌ ๊ตฌ์„ฑ์— ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ง€์›๋˜๋Š” ์ €์žฅ์†Œ ์œ„์น˜ ๋ชฉ๋ก์„ ๋ณด๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud artifacts locations list
    

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub์˜ ๋…๋ฆฝํ˜• Docker ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋Š” ์‚ฌ์šฉ์ž ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

    • Linux: $HOME/.docker/config.json
    • Windows: %USERPROFILE%/.docker/config.json
  4. Docker๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ๊ฐ€ PATH ์‹œ์Šคํ…œ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. docker-credential-gcr ๋ช…๋ น์–ด๊ฐ€ PATH ์‹œ์Šคํ…œ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  5. ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋„์šฐ๋ฏธ๊ฐ€ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    echo "https://HOSTNAME" | docker-credential-gcr get
    

    HOSTNAME์„ ๊ตฌ์„ฑ์— ์ถ”๊ฐ€ํ•œ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    echo "https://us-west1-docker.pkg.dev" | docker-credential-gcr get
    

    ๋ช…๋ น์–ด๊ฐ€ ์„ฑ๊ณตํ•˜๋ฉด ๋ฐ˜ํ™˜๋œ JSON ์ถœ๋ ฅ์— Secret ํ•„๋“œ์˜ ํ† ํฐ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    {"ServerURL":"https://us-west1-docker.pkg.dev","Username":"_dcgcr_2_0_0_token","Secret":"ya29..."}
    

์ด์ œ Docker๊ฐ€ Artifact Registry๋กœ ์ธ์ฆํ•˜๋„๋ก ๊ตฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๋ฅผ ๋‚ด๋ณด๋‚ด๊ณ  ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๊ถŒํ•œ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์•ก์„ธ์Šค ํ† ํฐ

Artifact Registry์— ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋‹จ๊ธฐ OAuth ์•ก์„ธ์Šค ํ† ํฐ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ† ํฐ์€ 60๋ถ„ ๋™์•ˆ ์œ ํšจํ•˜๋ฏ€๋กœ Artifact Registry์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๊ธฐ ํ•œ ์‹œ๊ฐ„ ์ „์— ์š”์ฒญํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๊ณ„์ • ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด์— ์•ก์„ธ์Šค ํ† ํฐ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋Œ€์‹  ์ž‘๋™ํ•˜๋„๋ก ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ž๋™ํ™”์— ์‚ฌ์šฉํ•  ๊ธฐ์กด ์„œ๋น„์Šค ๊ณ„์ •์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  2. ์ €์žฅ์†Œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋น„์Šค ๊ณ„์ •์— ์ ์ ˆํ•œ Artifact Registry ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

  3. ์„œ๋น„์Šค ๊ณ„์ •์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ํ† ํฐ์„ ์ƒ์„ฑํ•˜๊ณ  ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค.

    ์„œ๋น„์Šค ๊ณ„์ •์„ ๊ฐ€์žฅํ•˜๊ณ  ์„œ๋น„์Šค ๊ณ„์ •์— ๋Œ€ํ•œ ํ† ํฐ์„ ๊ฐ€์ ธ์˜จ ํ›„ ์„œ๋น„์Šค ๊ณ„์ •์œผ๋กœ ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค ๊ณ„์ • ํ† ํฐ ์ƒ์„ฑ์ž ์—ญํ• (roles/iam.serviceAccountTokenCreator)์˜ ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ACCOUNT์„ ์„œ๋น„์Šค ๊ณ„์ • ์ด๋ฉ”์ผ ์ฃผ์†Œ๋กœ, LOCATION์„ ์ €์žฅ์†Œ์˜ ๋ฆฌ์ „ ๋˜๋Š” ๋ฉ€ํ‹ฐ ๋ฆฌ์ „ ์œ„์น˜๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    Linux

    gcloud auth print-access-token \
        --impersonate-service-account ACCOUNT | docker login \
        -u oauth2accesstoken \
        --password-stdin https://LOCATION-docker.pkg.dev
    

    Windows

    gcloud auth print-access-token --impersonate-service-account ACCOUNT | docker login -u oauth2accesstoken --password-stdin https://LOCATION-docker.pkg.dev
    

์ด์ œ Docker๊ฐ€ Artifact Registry๋กœ ์ธ์ฆ๋ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๊ณ„์ • ํ‚ค

์„œ๋น„์Šค ๊ณ„์ •์˜ ์œ ํšจํ•œ ๋น„๊ณต๊ฐœ ํ‚ค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž๋Š” ๋ˆ„๊ตฌ๋‚˜ ์„œ๋น„์Šค ๊ณ„์ •์„ ํ†ตํ•ด ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ณ„์ •์— ๋Œ€ํ•œ ํ‚ค์˜ ์•ก์„ธ์Šค ์ˆ˜๋ช…์ฃผ๊ธฐ(์ฆ‰, ์„œ๋น„์Šค ๊ณ„์ •์ด ์•ก์„ธ์Šคํ•œ ๋ฐ์ดํ„ฐ)๋Š” ํ‚ค๋ฅผ ๋‹ค์šด๋กœ๋“œํ•œ ์‚ฌ์šฉ์ž์˜ ์ˆ˜๋ช…์ฃผ๊ธฐ์™€ ๊ด€๊ณ„๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

  • ์ €์žฅ์†Œ์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ์ „์šฉ ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ์„œ๋น„์Šค ๊ณ„์ •์— ํ•„์š”ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์— ๋Œ€ํ•œ ํŠน์ • Artifact Registry ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ๋‹ค์šด๋กœ๋“œ๋งŒ ํ•˜๋Š” ์„œ๋น„์Šค ๊ณ„์ •์—๋Š” Artifact Registry ๋ฆฌ๋” ์—ญํ• ๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€ ๋Œ€์‹  ๊ฐ ์ €์žฅ์†Œ์˜ ์ „์šฉ ์„œ๋น„์Šค ๊ณ„์ •์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ €์žฅ์†Œ ์ปจํ…์ŠคํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์•ก์„ธ์Šค๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐœ๋ฐœ ๋นŒ๋“œ์— ์‚ฌ์šฉ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ •์—๋Š” ํ”„๋กœ๋•์…˜ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ Artifact Registry ๋ฆฌ๋” ์—ญํ• ์ด ์žˆ๊ณ  ์Šคํ…Œ์ด์ง• ์ €์žฅ์†Œ์— ๋Œ€ํ•œ Artifact Registry ์ž‘์„ฑ์ž ์—ญํ• ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๊ด€๋ฆฌ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

Artifact Registry ์ €์žฅ์†Œ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ƒˆ ์„œ๋น„์Šค ๊ณ„์ •๊ณผ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋Œ€์‹  ์ž‘๋™ํ•˜๋„๋ก ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ž๋™ํ™”์— ์‚ฌ์šฉํ•  ๊ธฐ์กด ์„œ๋น„์Šค ๊ณ„์ •์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    Artifact Registry๋กœ ์ธ์ฆ์„ ์„ค์ •ํ•˜๋ ค๋ฉด ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค ํŒŒ์ผ์˜ ์œ„์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ๊ณ„์ •์˜ ๊ฒฝ์šฐ ์„œ๋น„์Šค ๊ณ„์ • ํŽ˜์ด์ง€์—์„œ ํ‚ค๋ฅผ ๋ณด๊ณ  ์ƒˆ ํ‚ค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์„œ๋น„์Šค ๊ณ„์ • ํŽ˜์ด์ง€๋กœ ์ด๋™

  2. ์›ํ•˜๋Š” ๊ฒฝ์šฐ ํ‚ค ํŒŒ์ผ์˜ ๋ชจ๋“  ์ฝ˜ํ…์ธ ๋ฅผ base64๋กœ ์ธ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    Linux

    base64 FILE-NAME > NEW-FILE-NAME
    

    macOS

    base64 -i FILE-NAME -o NEW-FILE-NAME
    

    Windows

    Base64.exe -e FILE-NAME > NEW-FILE-NAME
    

    ์—ฌ๊ธฐ์„œ FILE-NAME์€ ์›๋ž˜ ํ‚ค ํŒŒ์ผ ์ด๋ฆ„์ด๊ณ  NEW-FILE-NAME์€ base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ํ‚ค ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

  3. ์„œ๋น„์Šค ๊ณ„์ •์— ๋Œ€ํ•ด ๊ถŒํ•œ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. Compute Engine ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ถŒํ•œ๊ณผ ์•ก์„ธ์Šค ๋ฒ”์œ„๋ฅผ ๋ชจ๋‘ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  4. ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Docker์™€ ํ†ตํ•ฉ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    Linux/Mac OS

    cat KEY-FILE | docker login -u KEY-TYPE --password-stdin \
    https://LOCATION-docker.pkg.dev
    

    Windows

    Get-Content KEY-FILE |
    docker login -u KEY-TYPE --password-stdin https://LOCATION-docker.pkg.dev
    

    ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • KEY-TYPE์€ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
      • _json_key - ํŒŒ์ผ์„ ๋งŒ๋“ค ๋•Œ ์ œ๊ณต๋œ JSON ํ˜•์‹์˜ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ
      • _json_key_base64 - ํŒŒ์ผ์˜ ๋ชจ๋“  ์ฝ˜ํ…์ธ ๋ฅผ base64๋กœ ์ธ์ฝ”๋”ฉํ•œ ๊ฒฝ์šฐ
    • KEY-FILE์€ JSON ํ˜•์‹์˜ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค ํŒŒ์ผ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
    • LOCATION์€ ์ด๋ฏธ์ง€๊ฐ€ ์ €์žฅ๋œ ์ €์žฅ์†Œ์˜ ๋ฆฌ์ „ ๋˜๋Š” ๋ฉ€ํ‹ฐ ๋ฆฌ์ „ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

์ด์ œ Docker๊ฐ€ Artifact Registry๋กœ ์ธ์ฆ๋ฉ๋‹ˆ๋‹ค.