์ €์žฅ์†Œ ๊ฐ„ ์ด๋ฏธ์ง€ ๋ณต์‚ฌ

gcrane ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Artifact Registry์˜ Docker ์ €์žฅ์†Œ ๊ฐ„์— ์ด๋ฏธ์ง€๋ฅผ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Container Registry์—์„œ Artifact Registry๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋ณต์‚ฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋‹ค์Œ ์š”๊ตฌ์‚ฌํ•ญ์„ ํ™•์ธํ•˜์„ธ์š”.

  1. ๋ณต์‚ฌํ•  ์ด๋ฏธ์ง€์˜ Artifact Registry์—์„œ ๋Œ€์ƒ Docker ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

  2. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•„์ˆ˜ ๊ถŒํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

    • Artifact Registry ๋ฆฌ๋”(roles/storage.objectViewer) ๋˜๋Š” ๋ณต์‚ฌํ•˜๋Š” ์›๋ณธ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์ด์— ์ƒ์‘ํ•˜๋Š” ๊ถŒํ•œ์ด ์žˆ๋Š” ์—ญํ• 

    • Artifact Registry ์ž‘์„ฑ์ž(roles/artifactregistry.writer) ๋˜๋Š” ๋Œ€์ƒ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์ด์— ์ƒ์‘ํ•˜๋Š” ๊ถŒํ•œ์ด ์žˆ๋Š” ์—ญํ• 

๊ฐœ์š”

gcrane ๋„๊ตฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ง€์›์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์ €์žฅ์†Œ ๊ฐ„์˜ ๋ณต์‚ฌ๋ฅผ ๊ฐ„์†Œํ™”ํ•ด ์ค๋‹ˆ๋‹ค.

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

์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด๋ฏธ์ง€ ์‚ญ์ œ

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

์—ฌ๋Ÿฌ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ด๋ฏธ์ง€๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ํ•ด๋‹น ์ด๋ฏธ์ง€์˜ ์‚ญ์ œ๋ฅผ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด gcr-cleaner ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์–‘ํ•œ ๊ธฐ์ค€์— ๋”ฐ๋ผ ์ด์ „ ์ด๋ฏธ์ง€๋ฅผ ์ฐพ๊ณ  ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. gcr-cleaner ๋„๊ตฌ๋Š” ๊ณต์‹ Google ์ œํ’ˆ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋„๊ตฌ ์„ค์ • ๋ฐ ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ gcr-cleaner ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

gcrane ์„ค์ •

๋‹ค์Œ ํ™˜๊ฒฝ์—์„œ gcrane์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Compute Engine ์ธ์Šคํ„ด์Šค - ๋ณต์‚ฌํ•  ์ปจํ…Œ์ด๋„ˆ ์ˆ˜๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ๋น„์šฉ: Compute Engine VM์˜ ์ธ์Šคํ„ด์Šค ์—…ํƒ€์ž„์„ ๊ธฐ์ค€์œผ๋กœ ์š”๊ธˆ์ด ์ฒญ๊ตฌ๋ฉ๋‹ˆ๋‹ค. VM ์ธ์Šคํ„ด์Šค๊ฐ€ ์†Œ์Šค ์ €์žฅ์†Œ์™€ ๋‹ค๋ฅธ ์œ„์น˜์— ์žˆ๋Š” ๊ฒฝ์šฐ ๋ณต์‚ฌํ•œ ์ด๋ฏธ์ง€์— ๋„คํŠธ์›Œํฌ ์ด๊ทธ๋ ˆ์Šค ์š”๊ธˆ์ด ๋ถ€๊ณผ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Cloud Shell - ์•ฝ 40GB ์ดํ•˜์˜ ์†Œ๊ทœ๋ชจ ์ง‘ํ•ฉ์„ ๋ณต์‚ฌํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค. gcrane ๋„๊ตฌ๋Š” ์ด๋ฏธ ์—…๋กœ๋“œ๋œ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด์˜ ์—…๋กœ๋“œ๋ฅผ ๊ฑด๋„ˆ๋›ฐ๋ฏ€๋กœ, ์ด ํ•œ๋„๋Š” ๋ณต์‚ฌ ์ค‘์ธ ์ƒˆ ๋ฐ์ดํ„ฐ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

    ํฐ ์ €์žฅ์†Œ๋ฅผ ๋ณต์‚ฌํ•˜๋ฉด ์š”์ฒญ ์ œํ•œ ์‹œ๊ฐ„ 10๋ถ„์ด ์ง€๋‚˜๊ณ  Cloud Shell ์—ฐ๊ฒฐ์ด ๋Š์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋น„์šฉ: Cloud Shell ์ธ์Šคํ„ด์Šค๊ฐ€ ์†Œ์Šค ์ €์žฅ์†Œ์™€ ๋‹ค๋ฅธ ์œ„์น˜์— ์žˆ๋Š” ๊ฒฝ์šฐ ๋ณต์‚ฌํ•œ ์ด๋ฏธ์ง€์— ๋„คํŠธ์›Œํฌ ์ด๊ทธ๋ ˆ์Šค ์š”๊ธˆ์ด ๋ถ€๊ณผ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Cloud Shell ์„ธ์…˜์˜ ์œ„์น˜๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์„ธ์…˜์˜ ์œ„์น˜๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    curl metadata/computeMetadata/v1/instance/zone
    

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ธฐ๋Šฅ๊ณผ ๊ฐœ์„ ์‚ฌํ•ญ์„ ํ™œ์šฉํ•˜๋ ค๋ฉด ์ตœ์‹  ๋ฒ„์ „์˜ gcrane ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์„น์…˜์˜ ์„ค์ • ์•ˆ๋‚ด์— ์ตœ์‹  ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๋‹จ๊ณ„๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด gcrane ์„ค์น˜ ๋ฒ„์ „์„ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcrane version

Compute Engine ์„ค์ •

gcrane์„ ์‚ฌ์šฉํ•˜์—ฌ Compute Engine VM ์ธ์Šคํ„ด์Šค์˜ ์ด๋ฏธ์ง€๋ฅผ ๋ณต์‚ฌํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. VM ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋น„์šฉ์„ ์ตœ์†Œํ™”ํ•˜๋ ค๋ฉด ๋ณต์‚ฌํ•˜๋Š” ์›๋ณธ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์™€ ๋™์ผํ•œ ์œ„์น˜์— ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  2. ๊ธฐ๋ณธ์ ์œผ๋กœ VM ์ธ์Šคํ„ด์Šค๋Š” ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •๊ณผ ์—ฐ๊ฒฐ๋˜๋ฉฐ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ฌ ๊ถŒํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค. VM ์ธ์Šคํ„ด์Šค๊ฐ€ ์ด๋ฏธ์ง€๋ฅผ ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ๋„๋ก ์•ก์„ธ์Šค ๋ฒ”์œ„๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    1. VM ์ธ์Šคํ„ด์Šค๋ฅผ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค ์ค‘์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šค ๋ฒ”์œ„๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

      gcloud compute instances set-service-account INSTANCE --scopes=storage-rw
      

      INSTANCE์„ VM ์ธ์Šคํ„ด์Šค์˜ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    3. VM ์ธ์Šคํ„ด์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ค‘์ง€๋œ ์ธ์Šคํ„ด์Šค ์‹œ์ž‘์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  3. SSH๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ VM ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

  4. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ gcrane์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

    curl -L \
    https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz \
    -o go-containerregistry.tar.gz
    
  5. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ gcrane ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    tar -zxvf go-containerregistry.tar.gz
    chmod +x gcrane
    sudo mv gcrane /usr/local/bin/
    
  6. gcrane --help ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์„ค์น˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์ด๋ฏธ์ง€๋ฅผ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์†ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

Cloud Shell ์„ค์ •

  1. Cloud Shell ์ฐฝ์„ ์—ฝ๋‹ˆ๋‹ค.

    Cloud Shell ์—ด๊ธฐ

  2. ๊ธฐ๋ณธ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. PROJECT๋ฅผ Container Registry์™€ Artifact Registry๊ฐ€ ์„ค์น˜๋œ ํ”„๋กœ์ ํŠธ์˜ ID๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    gcloud config set project PROJECT
    
  3. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ gcrane ๋„๊ตฌ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

    curl -L \
    https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz \
    -o go-containerregistry.tar.gz
    
  4. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ gcrane ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    tar -zxvf go-containerregistry.tar.gz
    chmod +x gcrane
    sudo mv gcrane /usr/local/bin/
    
  5. gcrane --help ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์„ค์น˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์ด๋ฏธ์ง€๋ฅผ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์†ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

๋กœ์ปฌ ๋จธ์‹  ์„ค์ •

  1. GitHub ์ €์žฅ์†Œ์—์„œ gcrane์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ๋ช…๋ น์–ด๋Š” ๋ช…๋ น์ค„์—์„œ Linux x86-64 ๋ฐฐํฌํŒ์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

    curl -L \
    https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz \
    -o go-containerregistry.tar.gz
    
  2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ gcrane ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์–ด๋Š” ๋‹ค์šด๋กœ๋“œํ•œ ํŒŒ์ผ์˜ ์ด๋ฆ„์ด go-containerregistry.tar.gz๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

    tar -zxvf go-containerregistry.tar.gz
    chmod +x gcrane
    sudo mv gcrane /usr/local/bin/
    
  3. gcrane --help ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์„ค์น˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์ด๋ฏธ์ง€๋ฅผ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์†ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

๋ณต์‚ฌํ•  ์ด๋ฏธ์ง€ ์‹๋ณ„

gcrane ๋„๊ตฌ๋ฅผ ์„ค์น˜ํ•˜๋ฉด ์†Œ์Šค ์ €์žฅ์†Œ์˜ ๊ธฐ์กด ์ด๋ฏธ์ง€๋ฅผ ๋‚˜์—ดํ•˜์—ฌ ๋ณต์‚ฌํ•  ์ด๋ฏธ์ง€๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด ์ด๋ฏธ์ง€๋ฅผ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcrane ls LOCATION-docker.pkg.dev/PROJECT/REPOSITORY

์ด๋ฏธ์ง€์— ์žˆ๋Š” ํƒœ๊ทธ๋ฅผ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcrane ls LOCATION-docker.pkg.dev/PROJECT/IMAGE

ํŠน์ • ๊ฒฝ๋กœ์— ์žˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcrane ls -r LOCATION-docker.pkg.dev/PROJECT/PATH

๊ฐ ๋ช…๋ น์–ด๋งˆ๋‹ค ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • LOCATION์„ ์ €์žฅ์†Œ ์œ„์น˜๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
  • PROJECT๋ฅผ ํ”„๋กœ์ ํŠธ ID๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
  • PATH๋ฅผ ๋ณต์‚ฌํ•  ๊ฒฝ๋กœ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ๋ณต์‚ฌ ๋ช…๋ น์–ด๋Š” ์ด๋ฏธ์ง€ ๋ณต์‚ฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด๋ฏธ์ง€ ๋ณต์‚ฌ

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

๋‹จ์ผ ์ด๋ฏธ์ง€๋ฅผ ๋ณต์‚ฌํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcrane cp LOCATION1-docker.pkg.dev/PROJECT1/REPOSITORY1/IMAGE1 \
LOCATION2-docker.pkg.dev/PROJECT2/REPOSITORY2/IMAGE2

์ €์žฅ์†Œ์˜ ํŠน์ • ๊ฒฝ๋กœ์— ์žˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ๋ณต์‚ฌํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcrane cp -r LOCATION1-docker.pkg.dev/PROJECT1/REPOSITORY1/IMAGE1/PATH1 \
LOCATION2-docker.pkg.dev/PROJECT2/REPOSITORY2/IMAGE2/PATH2

์ €์žฅ์†Œ์˜ ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ ๋ณต์‚ฌํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcrane cp -r LOCATION1-docker.pkg.dev/PROJECT1/REPOSITORY1 \
LOCATION2-docker.pkg.dev/PROJECT2/REPOSITORY2

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

  • LOCATION1์€ ์†Œ์Šค ์ €์žฅ์†Œ์˜ ์œ„์น˜์ž…๋‹ˆ๋‹ค.
  • LOCATION2๋Š” ๋Œ€์ƒ ์ €์žฅ์†Œ์˜ ์œ„์น˜์ž…๋‹ˆ๋‹ค.
  • PROJECT1์€ ์†Œ์Šค ์ €์žฅ์†Œ์™€ ์—ฐ๊ฒฐ๋œ Google Cloud ํ”„๋กœ์ ํŠธ ID์ž…๋‹ˆ๋‹ค.
  • PROJECT2๋Š” ๋Œ€์ƒ ์ €์žฅ์†Œ์™€ ์—ฐ๊ฒฐ๋œ Google Cloud ํ”„๋กœ์ ํŠธ ID์ž…๋‹ˆ๋‹ค.
  • REPOSITORY1์€ ์†Œ์Šค ์ €์žฅ์†Œ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • REPOSITORY2๋Š” ๋Œ€์ƒ ์ €์žฅ์†Œ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • IMAGE1์€ ๋ณต์‚ฌํ•  ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค.
  • IMAGE2๋Š” ๋Œ€์ƒ ์ €์žฅ์†Œ์— ์žˆ๋Š” ์ด๋ฏธ์ง€์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

์˜ˆ์‹œ

๋‹ค์Œ ๋ช…๋ น์–ด๋Š” repo1 ์ €์žฅ์†Œ์—์„œ ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ ๋ฐ ๋ฆฌ์ „์˜ repo2 ์ €์žฅ์†Œ์— my-image:tag1์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

gcrane cp us-west1-docker.pkg.dev/my-project/repo1/my-image:tag1 \
us-west1-docker.pkg.dev/my-project/repo2/my-image:tag1

๋‹ค์Œ ๋ช…๋ น์–ด๋Š” repo1 ์ €์žฅ์†Œ์— ์žˆ๋Š” test-images/testing์˜ ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ repo2 ์ €์žฅ์†Œ์˜ ๋™์ผ ๊ฒฝ๋กœ์— ์žฌ๊ท€์ ์œผ๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

gcrane cp -r us-west1-docker.pkg.dev/my-project/repo1/test-images/testing \
us-west1-docker.pkg.dev/my-project/repo2/test-images/testing

๋‹ค์Œ ๋ช…๋ น์–ด๋Š” dev-project ํ”„๋กœ์ ํŠธ์˜ my-repo ์ €์žฅ์†Œ์— ์žˆ๋Š” ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ ๋‹ค๋ฅธ prod-project ํ”„๋กœ์ ํŠธ์˜ my-repo ์ €์žฅ์†Œ์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

gcrane cp -r us-west1-docker.pkg.dev/dev-project/my-repo \
us-west1-docker.pkg.dev/prod-project/my-repo