์ด ํ์ด์ง์์๋ Artifact Registry Docker ์ ์ฅ์์ ์ธ์ฆํ๋๋ก Docker๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
Cloud Build ๋๋ Google Cloud Google Kubernetes Engine ๋ฐ Cloud Run๊ณผ ๊ฐ์ ๋ฐํ์ ํ๊ฒฝ์ ๋ํ ์ธ์ฆ์ ๊ตฌ์ฑํ ํ์๋ ์์ง๋ง ํ์ํ ๊ถํ์ด ๊ตฌ์ฑ๋์ด ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค.์์ํ๊ธฐ ์ ์
-
Google Cloud CLI๋ฅผ ์ค์นํฉ๋๋ค. ์ค์น ํ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ Google Cloud CLI๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
gcloud init
์ธ๋ถ ID ๊ณต๊ธ์ ์ฒด (IdP)๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋จผ์ ์ ํด ID๋ก gcloud CLI์ ๋ก๊ทธ์ธํด์ผ ํฉ๋๋ค.
- (์ ํ์ฌํญ) cloud CLI ๋ช ๋ น์ด์ ๊ธฐ๋ณธ๊ฐ์ ๊ตฌ์ฑํฉ๋๋ค.
- ์ธ์ฆ์ ์ฌ์ฉ ์ค์ธ ๊ณ์ ์ Artifact Registry์ ์ก์ธ์คํ ์ ์๋ ๊ถํ์ด ์๋์ง ํ์ธํฉ๋๋ค. ์ฌ์ฉ์ ๊ณ์ ์ด ์๋ ์๋น์ค ๊ณ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- Docker๊ฐ ์์ง ์ค์น๋์ด ์์ง ์์ผ๋ฉด ์ค์นํฉ๋๋ค. Docker๋ Cloud Shell์ ํฌํจ๋์ด ์์ต๋๋ค.
- 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์ ์ธ์ฆํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
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) ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
- ACCOUNT๋
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
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
์ด ๋ช ๋ น์ด๋ ํ์ฌ Docker ๊ตฌ์ฑ์
credHelpers
์น์ ๊ณผ ์ง์ ๋ ํธ์คํธ ์ด๋ฆ์ ์ถ๊ฐํ ํ ์ ๋ฐ์ดํธ๋ ๊ตฌ์ฑ์ ๋ณด์ฌ์ค๋๋ค.๊ตฌ์ฑ ๋ณ๊ฒฝ์ฌํญ์ ์๋ฝํ๋ ค๋ฉด
y
๋ฅผ ์ ๋ ฅํฉ๋๋ค.์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ ์ฌ์ฉ์ ํ ๋๋ ํฐ๋ฆฌ์ ์ ์ฅ๋ฉ๋๋ค.
- Linux:
$HOME/.docker/config.json
- Windows:
%USERPROFILE%/.docker/config.json
- Linux:
Docker๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด ๋์ฐ๋ฏธ๊ฐ
PATH
์์คํ ์ ์์ด์ผ ํฉ๋๋ค.gcloud
๋ช ๋ น์ด๊ฐPATH
์์คํ ์ ์๋์ง ํ์ธํฉ๋๋ค.
๋ ๋ฆฝํ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด ๋์ฐ๋ฏธ
๋ ๋ฆฝํ Docker ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด ๋์ฐ๋ฏธ๋ gcloud CLI๋ฅผ ์ฌ์ฉํ ์ ์๋ ์์คํ ์์ Artifact Registry์ ์ธ์ฆํ๋๋ก Docker๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. gcloud CLI ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด ๋์ฐ๋ฏธ๋ณด๋ค ์๋นํ ๋น ๋ฅด๊ณ ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด(ADC)๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ํ๊ฒฝ์ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์๋์ผ๋ก ์ฐพ์ ์ ์์ต๋๋ค. ์ด๋ฏธ์ง ํ๊ทธ ์ง์ ๋๋ ๋์ด๊ณผ ๊ฐ์ด ์ด๋ฏธ์ง ๋ด๋ณด๋ด๊ธฐ ๋ฐ ๊ฐ์ ธ์ค๊ธฐ์ ๋ค๋ฅธ ์์ ์ ์ํํฉ๋๋ค. ์ 3์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ์๋ํ๋ ๋น๋ ๋๋ ๋๋์ ๊ตฌ์ฑ๋ ๋ ์ง์คํธ๋ฆฌ ํธ์คํธ๋ฅผ ์ฌ์ฉํ๋ Docker ํด๋ผ์ด์ธํธ์ ๊ฒฝ์ฐ์ ์ด ์ธ์ฆ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋
๋ฆฝํ Docker ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด ๋์ฐ๋ฏธ๋ Artifact Registry ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ Docker ๊ตฌ์ฑ ํ์ผ์ ๊ธฐ๋กํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด Docker ๋ช
๋ น์ค ๋๊ตฌ docker
๋ฅผ ์ฌ์ฉํ์ฌ Artifact Registry์ ์ง์ ์ํธ์์ฉํ ์ ์์ต๋๋ค.
Docker ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด ๋์ฐ๋ฏธ ์ฌ์ฉ ๋ฐฉ๋ฒ:
Docker ๋ช ๋ น์ด๋ฅผ ์คํํ ์ฌ์ฉ์๋ก ๋จธ์ ์ ๋ก๊ทธ์ธํฉ๋๋ค.
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/
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
- Linux:
Docker๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด ๋์ฐ๋ฏธ๊ฐ
PATH
์์คํ ์ ์์ด์ผ ํฉ๋๋ค.docker-credential-gcr
๋ช ๋ น์ด๊ฐPATH
์์คํ ์ ์๋์ง ํ์ธํฉ๋๋ค.์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด ๋์ฐ๋ฏธ๊ฐ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๊ฒ์ํ ์ ์๋์ง ํ์ธํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
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์ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉํ๊ธฐ ํ ์๊ฐ ์ ์ ์์ฒญํด์ผ ํฉ๋๋ค.
์๋น์ค ๊ณ์ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด์ ์ก์ธ์ค ํ ํฐ์ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์ ํ๋ฆฌ์ผ์ด์ ๋์ ์๋ํ๋๋ก ์๋น์ค ๊ณ์ ์ ๋ง๋ค๊ฑฐ๋ ์๋ํ์ ์ฌ์ฉํ ๊ธฐ์กด ์๋น์ค ๊ณ์ ์ ์ ํํฉ๋๋ค.
์ ์ฅ์ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๊ธฐ ์ํด ์๋น์ค ๊ณ์ ์ ์ ์ ํ Artifact Registry ์ญํ ์ ๋ถ์ฌํฉ๋๋ค.
์๋น์ค ๊ณ์ ์ ๋ํ ์ก์ธ์ค ํ ํฐ์ ์์ฑํ๊ณ ์ธ์ฆํฉ๋๋ค.
์๋น์ค ๊ณ์ ์ ๊ฐ์ฅํ๊ณ ์๋น์ค ๊ณ์ ์ ๋ํ ํ ํฐ์ ๊ฐ์ ธ์จ ํ ์๋น์ค ๊ณ์ ์ผ๋ก ์ธ์ฆํ ์ ์๋ ์๋น์ค ๊ณ์ ํ ํฐ ์์ฑ์ ์ญํ (
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 ์ ์ฅ์์์๋ง ์ฌ์ฉํ ์ ์๋๋ก ์ ์๋น์ค ๊ณ์ ๊ณผ ์๋น์ค ๊ณ์ ํค๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์ ํ๋ฆฌ์ผ์ด์ ๋์ ์๋ํ๋๋ก ์๋น์ค ๊ณ์ ์ ๋ง๋ค๊ฑฐ๋ ์๋ํ์ ์ฌ์ฉํ ๊ธฐ์กด ์๋น์ค ๊ณ์ ์ ์ ํํฉ๋๋ค.
Artifact Registry๋ก ์ธ์ฆ์ ์ค์ ํ๋ ค๋ฉด ์๋น์ค ๊ณ์ ํค ํ์ผ์ ์์น๊ฐ ํ์ํฉ๋๋ค. ๊ธฐ์กด ๊ณ์ ์ ๊ฒฝ์ฐ ์๋น์ค ๊ณ์ ํ์ด์ง์์ ํค๋ฅผ ๋ณด๊ณ ์ ํค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์ํ๋ ๊ฒฝ์ฐ ํค ํ์ผ์ ๋ชจ๋ ์ฝํ ์ธ ๋ฅผ 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๋ก ์ธ์ฝ๋ฉ๋ ํค ํ์ผ์ ๋๋ค.
์๋น์ค ๊ณ์ ์ ๋ํด ๊ถํ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋์๋์ง ํ์ธํฉ๋๋ค. Compute Engine ์๋น์ค ๊ณ์ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ถํ๊ณผ ์ก์ธ์ค ๋ฒ์๋ฅผ ๋ชจ๋ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
์๋น์ค ๊ณ์ ํค๋ฅผ ์ฌ์ฉํ์ฌ 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์ ์ด๋ฏธ์ง๊ฐ ์ ์ฅ๋ ์ ์ฅ์์ ๋ฆฌ์ ๋๋ ๋ฉํฐ ๋ฆฌ์ ์์น์ ๋๋ค.
- KEY-TYPE์ ๋ค์ ์ค ํ๋์
๋๋ค.
์ด์ Docker๊ฐ Artifact Registry๋ก ์ธ์ฆ๋ฉ๋๋ค.