יצירת מאגר מרוחק ב-Docker Hub
יוצרים מאגר מרוחק שישמש כשרת proxy ל-Docker Hub.
לפני שמתחילים
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
Enable the Artifact Registry, Secret Manager APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init - יוצרים חשבון ב-Docker Hub.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות ליצירת מאגר מרוחק של Docker Hub, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
-
כדי ליצור מאגרים מרוחקים ולתת גישה למאגרים ספציפיים: אדמין Artifact Registry (
roles/artifactregistry.admin) בפרויקט -
כדי ליצור סודות ולנהל אותם: התפקיד Secret Manager Admin (
roles/secretmanager.admin) בפרויקט
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
בחירת מעטפת
כדי להשלים את המדריך למתחילים הזה, משתמשים ב-Cloud Shell או במעטפת המקומית.
- Cloud Shell
- Cloud Shell היא סביבת מעטפת לניהול משאבים שמתארחים ב- Cloud de Confiance by S3NS. הוא מגיע עם Docker ו-Google Cloud CLI, ממשק שורת הפקודה הראשי של Cloud de Confiance.
- מעטפת מקומית
- אם אתם מעדיפים להשתמש במעטפת המקומית, עליכם להתקין את Docker ואת ה-CLI של gcloud בסביבה שלכם.
הפעלת Cloud Shell
כדי להפעיל את Cloud Shell:
עוברים אל Cloud de Confiance המסוף.
לוחצים על הלחצן Activate Cloud Shell (הפעלת Cloud Shell):
.
בחלק התחתון של המסוף ייפתח סשן של Cloud Shell בתוך מסגרת.
משתמשים בשורת הפקודות הזו כדי להריץ פקודות gcloud.
הגדרת מעטפת מקומית
כדי להתקין את ה-CLI של gcloud ואת Docker, מבצעים את השלבים הבאים:
מתקינים את ה-CLI של gcloud. כדי לעדכן התקנה קיימת, מריצים את הפקודה
gcloud components update.אם Docker עדיין לא מותקן, מתקינים אותו.
כדי לבצע פעולות במאגרי מידע, ל-Docker נדרשת גישה עם הרשאות. ב-Linux או ב-Windows, מוסיפים את המשתמש שמשמש להפעלת פקודות Docker לקבוצת האבטחה של Docker. ב-macOS אין צורך לבצע את השלב הזה כי Docker Desktop פועל במכונה וירטואלית כמשתמש Root.
Linux
קבוצת האבטחה של Docker נקראת
docker. כדי להוסיף את שם המשתמש, מריצים את הפקודה הבאה:sudo usermod -a -G docker ${USER}Windows
קבוצת האבטחה של Docker נקראת
docker-users. כדי להוסיף משתמש משורת הפקודה של האדמין, מריצים את הפקודה הבאה:net localgroup docker-users DOMAIN\USERNAME /addכאשר:
- DOMAIN הוא הדומיין של Windows.
- USERNAME הוא שם המשתמש שלכם.
כדי שהשינויים במינוי לקבוצה ייכנסו לתוקף, צריך לצאת מהחשבון ולהיכנס אליו שוב. אם אתם משתמשים במכונה וירטואלית, יכול להיות שתצטרכו להפעיל אותה מחדש כדי שהשינויים בחברות ייכנסו לתוקף.
כדי לוודא ש-Docker פועל, מריצים את פקודת Docker הבאה, שמחזירה את השעה והתאריך הנוכחיים:
docker run --rm busybox dateהדגל
--rmמוחק את מופע הקונטיינר ביציאה.
הגדרת אימות ב-Docker Hub
כדי למנוע שימוש במכסת Docker Hub לא מאומתת, מומלץ לבצע אימות ל-Docker Hub כשמשתמשים במאגרי מידע מרוחקים. מאגרים מרוחקים מאפשרים להוסיף את שם המשתמש שלכם ב-Docker Hub ואת טוקן הגישה האישי שנשמר כסוד כדי לבצע אימות ב-Docker Hub.
יצירת אסימון גישה אישי ב-Docker Hub
- מתחברים ל-Docker Hub.
- יוצרים אסימון גישה אישי עם הרשאות קריאה בלבד.
מעתיקים את טוקן הגישה.
שומרים את אסימון הגישה בקובץ טקסט במחשב או ב-Cloud Shell.
שמירת אסימון הגישה האישי בסוד
console
-
נכנסים לדף Secret Manager במסוף Cloud de Confiance .
-
בדף Secret Manager, לוחצים על Create Secret (יצירת סוד).
-
בדף Create secret, בשדה Name, נותנים שם לסוד
my-secret. -
בשדה Secret value (ערך הסוד), מזינים את אסימון הגישה האישי שלכם ב-Docker Hub.
-
משאירים את הקטע אזורים ללא שינוי.
-
לוחצים על הלחצן Create secret.
CLI של gcloud
gcloud secrets create my-secret --data-file="/path/to/file.txt"
/path/to/file.txt הוא המיקום של קובץ הטקסט עם אסימון הגישה האישי.
מעניקים לחשבון השירות של Artifact Registry גישה לסוד
console
-
נכנסים לדף Secret Manager במסוף Cloud de Confiance .
-
בדף Secret Manager, לוחצים על תיבת הסימון לצד
my-secret. -
אם החלונית לא פתוחה, לוחצים על Show Info Panel כדי לפתוח אותה.
-
בחלונית המידע, לוחצים על Add Principal.
-
באזור הטקסט New principals, מזינים את כתובת האימייל של חשבון השירות של Artifact Registry. כתובת האימייל בחשבון השירות של Artifact Registry היא בפורמט הבא
service-PROJECT-NUMBER@gcp-sa-artifactregistry.s3ns-system.iam.gserviceaccount.com
כאשר PROJECT-NUMBER הוא מספר הפרויקט.
כדי למצוא את מספר הפרויקט:
-
נכנסים לדף Dashboard במסוף Cloud de Confiance .
-
לוחצים על הרשימה הנפתחת Select from בחלק העליון של הדף.
-
בחלון בחירה מתוך שמופיע, בוחרים את הפרויקט.
מזהה הפרויקט ומספר הפרויקט מוצגים בכרטיס Project info בלוח הבקרה של הפרויקט.
-
-
בתפריט הנפתח Select a role, בוחרים באפשרות Secret Manager ואז באפשרות Secret Manager Secret Accessor.
CLI של gcloud
gcloud secrets add-iam-policy-binding my-secret \
--member="serviceAccount:service-PROJECT-NUMBER@gcp-sa-artifactregistry.s3ns-system.iam.gserviceaccount.com" \
--role="roles/secretmanager.secretAccessor"
כאשר PROJECT-NUMBER הוא מספר הפרויקט.
כדי למצוא את מספר הפרויקט:
-
נכנסים לדף Dashboard במסוף Cloud de Confiance .
-
לוחצים על הרשימה הנפתחת Select from בחלק העליון של הדף.
-
בחלון בחירה מתוך שמופיע, בוחרים את הפרויקט.
מזהה הפרויקט ומספר הפרויקט מוצגים בכרטיס Project info בלוח הבקרה של הפרויקט.
יצירת מאגר מרוחק
כדי ליצור מאגר מרוחק ב-Artifact Registry בשם quickstart-docker-hub-remote במיקום us-central1 עם פרטי הכניסה שלכם ל-Docker Hub, מריצים את הפקודה הבאה:
gcloud artifacts repositories create quickstart-docker-hub-remote \
--project=PROJECT_ID \
--repository-format=DOCKER \
--location=us-central1 \
--description="Remote Docker repository" \
--mode=remote-repository \
--remote-repo-config-desc="Docker Hub" \
--remote-docker-repo=DOCKER-HUB \
--remote-username=USERNAME \
--remote-password-secret-version=projects/PROJECT/secrets/my-secret/versions/1
כאשר:
-
quickstart-docker-hub-remoteהוא שם המאגר. שמות המאגרים צריכים להיות ייחודיים לכל מיקום מאגר בפרויקט. -
PROJECT_IDהוא מזהה הפרויקט. אם לא מציינים את הדגל הזה, המערכת משתמשת בפרויקט הנוכחי או בפרויקט ברירת המחדל. -
us-central1הוא המיקום האזורי או המיקום במספר אזורים של המאגר. אפשר להשמיט את הדגל הזה אם מגדירים ברירת מחדל. כדי לראות רשימה של מיקומים נתמכים, מריצים את הפקודהgcloud artifacts locations list. -
"Remote Docker repository"הוא התיאור האופציונלי של המאגר. אל תכללו מידע אישי רגיש, כי תיאורי המאגרים לא מוצפנים. -
"Docker Hub"הוא תיאור אופציונלי של הגדרת המאגר החיצוני עבור המאגר המרוחק הזה. -
DOCKER-HUBמגדיר את מאגר המרוחק במעלה הזרם למאגר הציבורי במעלה הזרם של Docker Hub. - USERNAME הוא שם המשתמש שלכם ב-Docker Hub.
-
projects/PROJECT/secrets/my-secret/versions/1הוא גרסת הסוד שיצרתם כדי לאחסן את טוקן הגישה האישי שלכם ב-Docker Hub.
Artifact Registry יוצר את המאגר ומוסיף אותו לרשימת המאגרים.
הגדרת אימות Docker
כדי לדחוף או למשוך תמונות, צריך להגדיר את Docker כך שישתמש ב-Google Cloud CLI כדי לאמת בקשות ל-Artifact Registry.
מתחברים ל-CLI של gcloud בתור המשתמש שיריץ את פקודות Docker.
gcloud auth loginכדי להגדיר אימות למאגרי Docker באזור
us-central1, מריצים את הפקודה הבאה:gcloud auth configure-docker us-central1-docker.pkg.devהפקודה מעדכנת את ההגדרה של Docker. מעכשיו אפשר להתחבר ל-Artifact Registry בפרויקט Cloud de Confiance כדי לשלוח תמונות ולמשוך אותן.
מידע על שיטות אימות אחרות זמין במאמר בנושא שיטות אימות.
העברת תמונה למאגר המרוחק
מתחברים ל-CLI של gcloud בתור המשתמש שיריץ את פקודות Docker.
gcloud auth loginכדי לשלוף תמונה מ-Docker Hub למחשב ולמאגר המרוחק, מריצים את הפקודה הבאה:
docker pull us-central1-docker.pkg.dev/PROJECT/quickstart-docker-hub-remote/busybox:latestכאשר:
-
us-central1הוא המיקום של המאגר המרוחק. -
us-central1-docker.pkg.devהוא שם המארח של מאגר Docker שיצרתם. - PROJECT הוא Cloud de Confiance by S3NS
מזהה הפרויקט.
אם מזהה הפרויקט מכיל נקודתיים (
:), כדאי לעיין במאמר בנושא פרויקטים בהיקף הדומיין. -
quickstart-docker-hub-remoteהוא המזהה של המאגר שיצרתם. -
busyboxהוא שם התמונה שרוצים למשוך מ-Docker Hub אלquickstart-docker-hub-remote. -
latestהיא הגרסה המתויגת של התמונה שרוצים למשוך מ-Docker Hub.
התמונה נמשכת למכונה שלכם ונשמרת במטמון במאגר המרוחק. אם תמשכו שוב את אותה תמונה מתויגת, היא תימשך מהמאגר המרוחק. המערכת משתמשת בפרטי הכניסה שלכם ל-Docker Hub.
-
מציגים את רשימת הארטיפקטים שמאוחסנים במאגר המרוחק:
gcloud artifacts packages list \ --location=us-central1 \ --repository=quickstart-docker-hub-remoteהפלט אמור להיראות כך:
Listing items under project my-project, location us-central1, repository quickstart-docker-hub-remote. PACKAGE: busybox CREATE_TIME: 2023-06-19T18:59:09 UPDATE_TIME: 2023-06-19T18:59:10
הסרת המשאבים
כדי לא לצבור חיובים לחשבון Cloud de Confiance על המשאבים שבהם השתמשתם בדף הזה, פועלים לפי השלבים הבאים:
מחיקת המאגר
אם אתם רוצים לשמור את הפרויקט ולמחוק רק את משאב המאגר, אתם צריכים לפעול לפי השלבים שמפורטים בקטע הזה. אם רוצים למחוק את כל הפרויקט, צריך לפעול לפי השלבים שמפורטים במאמר מחיקת הפרויקט.
לפני שמסירים את המאגר, צריך לוודא שכל התמונות שרוצים לשמור זמינות במיקום אחר.
כדי למחוק את המאגר:
המסוף
פותחים את הדף Repositories במסוף Cloud de Confiance .
ברשימת המאגרים, בוחרים במאגר
quickstart-docker-hub-remote.לוחצים על Delete.
gcloud
כדי למחוק את מאגר quickstart-docker-hub-remote, מריצים את הפקודה הבאה:
gcloud artifacts repositories delete quickstart-docker-hub-remote \ --location=us-central1
מחיקת פרויקט
- במסוף Cloud de Confiance , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.