מעבר לגרסה היציבה של התמונה

אם אתם משתמשים בתמונות Docker‏ :latest,‏ :alpine,‏ :emulators,‏ :latest,‏ :slim ו-:debian_component_based, מומלץ לעבור לתמונה מבוססת-debian‏ :stable כדי לקבל גודל תמונה קטן יותר ותיקוני אבטחה משופרים. כדי לעבור לשימוש בתמונה :stable, אתם יכולים להרחיב את תמונת Docker‏ :stable לתמונה מבוססת-debian שבה אתם משתמשים.

במקרים מסוימים (למשל, התקנת תלות ישנות ולא תואמות כמו python2 או jdks ישנים יותר וכו'), לא תמיד אפשר להרחיב את תמונת :stable. במקרה כזה, יכול להיות שתצטרכו ליצור קובץ Dockerfile משלכם.

הרחבת קובץ האימג' של Docker‏ :stable

אפשר להשתמש בקובץ האימג' של Docker‏ :stable כקובץ בסיס ולהתקין רכיבים נוספים וחבילות apt כדי להרחיב אותו לקובצי אימג' אחרים של Docker שמבוססים על Debian (כלומר :latest,‏ :emulators ו-:slim). כדי להרחיב את קובץ האימג' של Docker‏ :stable, אפשר לבצע אחת מהפעולות הבאות:

הרחבת קובץ הבסיס של :stable באמצעות התאמה אישית בזמן הריצה

אפשר להרחיב את קובץ האימג' של :stable Docker כדי להשתמש בו כקובץ האימג' של :latest, :emulators או :slim על ידי התאמה אישית שלו בזמן הריצה.

התאמה אישית של תמונת :latest

מריצים את הפקודה הבאה docker run כדי להרחיב את תמונת :stable Docker לתמונת :latest Docker בזמן הריצה:

$ docker run -e APT_PACKAGES='curl python3-crcmod lsb-release openssh-client git make gnupg' \
-e COMPONENTS='google-cloud-cli-datastore-emulator google-cloud-cli-pubsub-emulator google-cloud-cli-bigtable-emulator google-cloud-cli-firestore-emulator google-cloud-cli-spanner-emulator google-cloud-cli-cbt google-cloud-cli-kpt google-cloud-cli-local-extract google-cloud-cli-gke-gcloud-auth-plugin kubectl' \
gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud version

התאמה אישית של תמונת :emulators

אפשר להריץ את הפקודה הבאה כדי להרחיב את קובץ האימג' של :stable Docker לקובץ האימג' של :emulators Docker בזמן הריצה:

$ docker run -e APT_PACKAGES='curl python3-crcmod lsb-release gnupg bash' \
-e COMPONENTS='google-cloud-cli-datastore-emulator google-cloud-cli-pubsub-emulator google-cloud-cli-bigtable-emulator google-cloud-cli-firestore-emulator google-cloud-cli-spanner-emulator' \
gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud version

התאמה אישית של תמונת :slim

אפשר להרחיב את קובץ האימג' של Docker‏ :stable כקובץ האימג' של Docker‏ :slim על ידי הרצת הפקודה docker run הבאה:

$ docker run -e APT_PACKAGES='curl gcc python3-crcmod python3-pip lsb-release openssh-client git gnupg' \
gcr.io/google.com/cloudsdktool/google-cloud-cli:stable gcloud version

הרחבת קובץ האימג' :stable באמצעות הגדרת build

אתם יכולים להשתמש בקובצי הגדרות build מותאמים אישית משלכם כדי להרחיב את קובץ האימג' של :stable Docker ולהתקין חבילות או רכיבים נוספים. לדוגמה, אם רוצים להרחיב את קובץ האימג' של :stable Docker כדי להתקין חבילות python3-google-auth ו-python3-requests ולהתקין את הרכיב pubsub emulator, אפשר להשתמש בקובץ הגדרות הבנייה הבא.

steps:
  - id: 'extend-stable'
    name: gcr.io/google.com/cloudsdktool/google-cloud-cli:499.0.0-stable
    args:
      - gcloud
      - version
    env:
      - 'APT_PACKAGES=python3-google-auth python3-requests'
      - 'COMPONENTS=google-cloud-cli-pubsub-emulator'

הרחבת קובץ הבסיס :stable באמצעות יצירת קובץ Docker משלכם

אפשר להרחיב את קובץ האימג' של Docker‏ :stable על ידי יצירת קובץ Docker משלכם עם קובץ האימג' :stable כקובץ הבסיס, ואז ליצור את קובץ האימג' של Docker באמצעות הפקודה docker build.

יצירת תמונה משלכם :latest

כדי להמיר את התמונה :stable לתמונה :latest, מבצעים את הפעולות הבאות:

  1. יוצרים קובץ Docker משלכם מ-:stable על ידי התקנת הרכיבים והחבילות הנדרשים:

    FROM docker:27.1.1 as static-docker-source
    
    FROM gcr.io/google.com/cloudsdktool/google-cloud-cli:stable
    COPY --from=static-docker-source /usr/local/bin/docker /usr/local/bin/docker
    COPY --from=static-docker-source /usr/local/libexec/docker/cli-plugins/docker-buildx /usr/local/libexec/docker/cli-plugins/docker-buildx
    
    RUN apt-get update -qqy && apt-get -qqy upgrade && apt-get install -qqy \
          curl \
          python3-crcmod \
          lsb-release \
          openssh-client \
          git \
          make \
          gnupg && \
       export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)" && \
       export CLOUD_SDK_VERSION=$(gcloud version | grep "Google Cloud SDK" | grep -oE '[^ ]+$') && \
       echo "deb https://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" > /etc/apt/sources.list.d/google-cloud-sdk.list && \
       curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - && \
       apt-get update && \
       apt-get install -y google-cloud-cli-datastore-emulator=${CLOUD_SDK_VERSION}-0 \
          google-cloud-cli-pubsub-emulator=${CLOUD_SDK_VERSION}-0 \
          google-cloud-cli-bigtable-emulator=${CLOUD_SDK_VERSION}-0 \
          google-cloud-cli-firestore-emulator=${CLOUD_SDK_VERSION}-0 \
          google-cloud-cli-spanner-emulator=${CLOUD_SDK_VERSION}-0 \
          google-cloud-cli-cbt=${CLOUD_SDK_VERSION}-0 \
          google-cloud-cli-kpt=${CLOUD_SDK_VERSION}-0 \
          google-cloud-cli-local-extract=${CLOUD_SDK_VERSION}-0 \
          google-cloud-cli-gke-gcloud-auth-plugin=${CLOUD_SDK_VERSION}-0 \
          kubectl
    
  2. יוצרים את קובץ ה-Dockerfile כדי לקבל קובץ אימג' משלכם של :latest Docker:

    $ docker build -t my-cloud-sdk-docker:latest .
    

יצירת תמונה משלכם :emulators

כדי להמיר את התמונה :stable לתמונה :emulators, מבצעים את הפעולות הבאות:

  1. יוצרים את קובץ ה-Dockerfile עם הרכיבים והחבילות הנדרשים באופן הבא:

    FROM gcr.io/google.com/cloudsdktool/google-cloud-cli:stable
    
    RUN apt-get update -qqy && apt-get -qqy upgrade && apt-get install -qqy \
          curl \
          python3-crcmod \
          lsb-release \
          gnupg \
          bash && \
       export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)" && \
       export CLOUD_SDK_VERSION=$(gcloud version | grep "Google Cloud SDK" | grep -oE '[^ ]+$') && \
       echo "deb https://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" > /etc/apt/sources.list.d/google-cloud-sdk.list && \
       curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - && \
       apt-get update && \
       apt-get install -y google-cloud-cli-datastore-emulator=${CLOUD_SDK_VERSION}-0 \
          google-cloud-cli-pubsub-emulator=${CLOUD_SDK_VERSION}-0 \
          google-cloud-cli-bigtable-emulator=${CLOUD_SDK_VERSION}-0 \
          google-cloud-cli-firestore-emulator=${CLOUD_SDK_VERSION}-0 \
          google-cloud-cli-spanner-emulator=${CLOUD_SDK_VERSION}-0
    
  2. מריצים את הפקודה הבאה כדי ליצור את קובץ ה-Dockerfile:

    $ docker build -t my-cloud-sdk-docker:emulators .
    

יצירת תמונה משלכם :slim

כדי להמיר את התמונה :stable לתמונה :slim, מבצעים את הפעולות הבאות:

  1. יוצרים קובץ Docker באמצעות :stable כתמונת בסיס:

    FROM docker:27.1.1 as static-docker-source
    
    FROM gcr.io/google.com/cloudsdktool/google-cloud-cli:stable
    COPY --from=static-docker-source /usr/local/bin/docker /usr/local/bin/docker
    COPY --from=static-docker-source /usr/local/libexec/docker/cli-plugins/docker-buildx /usr/local/libexec/docker/cli-plugins/docker-buildx
    
    RUN apt-get update -qqy && apt-get -qqy upgrade && apt-get install -qqy \
          curl \
          python3-crcmod \
          lsb-release \
          openssh-client \
          git \
          make \
          gnupg
    
  2. מריצים את הפקודה הבאה כדי ליצור את קובץ ה-Dockerfile:

    $ docker build -t my-cloud-sdk-docker:slim .