Anda dapat mengonfigurasi instance virtual machine (VM) atau template instance untuk men-deploy dan meluncurkan container Docker. Compute Engine menyediakan image Container-Optimized OS (COS) terbaru dengan Docker yang sudah diinstal dan meluncurkan container Anda saat VM dimulai.
Sebelum memulai
- Jika Anda belum terbiasa dengan container, baca Apa itu container dan manfaatnya.
- Jika Anda tidak terbiasa dengan Docker, baca dokumentasi Docker.
- Baca tentang Container-Optimized OS.
- Baca tentang grup instance terkelola (MIG).
-
Jika Anda belum melakukannya, siapkan autentikasi.
Autentikasi adalah
proses verifikasi identitas Anda untuk mengakses layanan dan API Google Cloud.
Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat mengautentikasi ke Compute Engine dengan memilih salah satu opsi berikut:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Kelola VM yang menjalankan container dengan cara yang sama seperti Anda memperlakukan VM lain saat mengonfigurasi dan mengelola infrastruktur Compute Engine.
- Gunakan proses dan alat yang sudah dikenal seperti Google Cloud CLI atau Compute Engine API untuk mengelola VM dengan container.
Buat layanan skalabel menggunakan container yang sedang berjalan dari grup instance terkelola (MIG), yang menawarkan fitur seperti penskalaan otomatis, autohealing, update berkelanjutan, deployment multi-zona, dan load balancing.
- Menjalankan microservice dalam jumlah besar
- Memiliki waktu startup container yang lebih cepat
- Memanfaatkan orkestrasi otomatis Kubernetes, termasuk upgrade otomatis, perbaikan otomatis node, dan penskalaan otomatis
- Men-deploy software pada booting VM menggunakan skrip startup atau cloud-init.
- Membuat boot disk image kustom dengan software yang sudah diinstal sebelumnya.
- Anda memaketkan aplikasi dan library yang diperlukan ke dalam image Docker dan memublikasikan image ke Artifact Registry, atau registry pihak ketiga seperti Docker Hub.
- Anda menentukan nama image Docker dan konfigurasi
docker run
saat membuat instance VM atau template instance untuk MIG. - Compute Engine membuat instance VM yang menggunakan image Container-Optimized OS yang disediakan Google. Image ini mencakup runtime Docker dan software tambahan yang bertanggung jawab untuk memulai container Anda.
- Compute Engine menyimpan setelan container Anda di
metadata instance di bagian kunci metadata
gce-container-declaration
. - Saat VM dimulai, image Container-Optimized OS akan menggunakan konfigurasi perintah
docker run
yang disimpan dalam metadata instance, mengambil image container dari repositori, dan memulai container. - Anda hanya dapat men-deploy satu container untuk setiap instance VM. Pertimbangkan Google Kubernetes Engine jika Anda perlu men-deploy beberapa container per instance VM.
Anda hanya dapat men-deploy container dari repositori publik atau dari repositori Artifact Registry atau Container Registry pribadi yang dapat Anda akses. Repositori pribadi lainnya tidak didukung.
Lihat dokumentasi kontrol akses untuk Artifact Registry atau Container Registry untuk mengetahui informasi tentang izin registry pribadi.
Anda tidak dapat memetakan port instance VM ke port container (opsi
-p
Docker). Untuk mengaktifkan akses ke penampung Anda, lihat Memublikasikan port container.Anda hanya dapat menggunakan Image Container-Optimized OS dengan metode deployment ini.
Anda hanya dapat menggunakan fitur ini melalui konsol Google Cloud atau Google Cloud CLI, bukan API.
- Upload image Docker Anda ke Artifact Registry.
- Gunakan image container yang tersedia secara publik dari Docker Hub atau registry lainnya.
Buka halaman Buat instance.
Tentukan detail VM.
Di bagian Container, klik Deploy container.
Pada halaman Konfigurasi container, tentukan nama image container dan konfigurasi opsi untuk menjalankan container sesuai kebutuhan Anda. Misalnya, Anda dapat menentukan
gcr.io/cloud-marketplace/google/nginx1:latest
untuk image container.Lanjutkan dengan proses pembuatan VM.
- Mengupdate deklarasi container pada instance. Compute Engine
menyimpan deklarasi container yang telah diupdate di
metadata instance pada
kunci metadata
gce-container-declaration
. - Menghentikan dan memulai ulang instance untuk mengaktifkan konfigurasi yang diupdate, jika instance sedang berjalan. Jika instance dihentikan, update deklarasi container dan biarkan instance tetap dihentikan. Instance VM mendownload image baru dan meluncurkan container saat VM dimulai.
Buka halaman VM instances.
Klik nama VM yang akan diupdate.
Di halaman detail instance, klik Edit.
Tentukan image container baru dan perbarui opsi untuk menjalankan container sesuai kebutuhan.
Untuk menyimpan perubahan, klik Simpan dan mulai ulang. Compute Engine menyimpan perubahan dan memulai ulang instance secara otomatis untuk melakukan update. Setelah dimulai ulang, VM akan mendownload image baru dan memulai container dengan konfigurasi yang diupdate.
Buat template instance yang didasarkan pada image Docker.
Buat MIG dari template instance baru.
Buka halaman Template instance.
Untuk membuat template instance, klik Buat template instance.
Di bagian Container, pilih Deploy image container.
Di bagian Image container, tentukan nama image Docker dan konfigurasikan opsi untuk menjalankan container jika diinginkan. Misalnya, Anda dapat menentukan
gcr.io/cloud-marketplace/google/nginx1:15
untuk image container.Klik Buat.
- Siapkan image Docker baru untuk deployment.
- Buat template instance berdasarkan image Docker baru dengan cara yang sama seperti Anda membuat template berbasis container.
- Update MIG ke template instance baru dengan menggunakan Updater Grup Instance Terkelola.
- Buat template instance berdasarkan versi image Docker Anda saat ini, dengan cara yang sama seperti Anda membuat template berbasis container untuk MIG baru. Versi terbaru image Container-Optimized OS yang didukung akan digunakan secara default.
- Update MIG dengan template instance baru menggunakan Updater Grup Instance Terkelola.
VM_NAME
: nama instance VMCONTAINER_NAME
: nama containerLog agen startup, juga dikenal sebagai log konlet. Agen startup mengurai konfigurasi container dan menjalankan tugas untuk memulai container di instance VM Compute Engine.
Log aktivitas Docker melaporkan peristiwa container, termasuk peristiwa awal dan penghentian container.
Log dari container Anda menyertakan
STDOUT
dari aplikasi yang berjalan di container Anda.Buka halaman VM instances.
Pilih instance VM dengan log agen startup yang ingin Anda lihat.
Pada Log, klik Port serial 1 (konsol) untuk melihat log konsol serial.
- Hubungkan ke instance Anda dengan container menggunakan SSH.
Jalankan perintah
sudo journalctl
untuk melihat log startup container dan startup VM. Gunakan perintah berikut untuk memfilter log agen startup container (konlet
).sudo journalctl -u konlet*
Buka halaman VM instances.
Pilih instance VM dengan log agen startup yang ingin Anda lihat.
Pada Log, klik Cloud Logging untuk melihat log Cloud Logging.
Masukkan filter penelusuran untuk mengambil log agen startup.
resource.type="gce_instance" logName="projects/PROJECT_ID/logs/cos_system" jsonPayload.SYSLOG_IDENTIFIER="konlet-startup" jsonPayload._HOSTNAME="VM_NAME"
Ganti kode berikut:
PROJECT_ID
: project ID yang berisi instanceVM_NAME
: nama instance yang lognya ingin Anda dapatkan
PROJECT_ID
: project ID yang berisi instanceVM_NAME
: nama instance yang ingin Anda dapatkan lognya- Hubungkan ke instance Anda dengan container menggunakan SSH.
Jalankan perintah
sudo journalctl
dengan filter berikut untuk melihat log aktivitas Docker.sudo journalctl -u docker-events-collector
Buka halaman VM instances.
Pilih instance VM dengan log agen startup yang ingin Anda lihat.
Pada Log, klik Cloud Logging untuk melihat log Cloud Logging.
Masukkan filter penelusuran berikut untuk mengambil log aktivitas Docker.
resource.type="gce_instance" logName="projects/PROJECT_ID/logs/cos_system" jsonPayload._HOSTNAME="VM_NAME" jsonPayload.SYSLOG_IDENTIFIER="docker"
Ganti kode berikut:
PROJECT_ID
: project ID yang berisi instanceVM_NAME
: nama instance yang lognya ingin Anda dapatkan
PROJECT_ID
: project ID yang berisi instanceVM_NAME
: nama instance yang lognya ingin Anda dapatkanBuka halaman VM instances.
Pilih instance VM dengan log agen startup yang ingin Anda lihat.
Pada Log, klik Cloud Logging untuk melihat log Cloud Logging.
Pemuatan halaman Cloud Logging dengan filter penelusuran default. Salin nilai untuk
resource.labels.instance_id
. Anda akan menggunakannya nanti.Update filter penelusuran untuk mengambil log container.
resource.type="gce_instance" logName="projects/PROJECT_ID/logs/cos_containers" resource.labels.instance_id="INSTANCE_ID"
Ganti kode berikut:
PROJECT_ID
: project ID yang berisi instanceINSTANCE_ID
: ID instance yang ingin Anda dapatkan lognya
Tentukan ID untuk instance yang ingin Anda dapatkan lognya:
gcloud compute instances describe VM_NAME \ --zone ZONE \ --format="value(id)"
Ganti kode berikut:
VM_NAME
: nama instance yang ingin Anda dapatkan lognyaZONE
: zona tempat instance berada
Gunakan filter dan perintah berikut untuk melihat log container instance.
gcloud logging read "resource.type=gce_instance AND \ logName=projects/PROJECT_ID/logs/cos_containers AND \ resource.labels.instance_id=INSTANCE_ID"
Ganti kode berikut:
PROJECT_ID
: project ID yang berisi instance.INSTANCE_ID
: ID instance.
Misalnya, gunakan perintah berikut untuk melihat 10 log container terakhir di Cloud Logging untuk instance VM yang menjalankan COS 70, yang ada di
my-project
, dan yang memiliki ID instance555123456789012345
.gcloud logging read "resource.type=gce_instance AND \ logName=projects/my-project/logs/cos_containers AND \ resource.labels.instance_id=555123456789012345" \ --limit 10
- Tentukan kebijakan mulai ulang container.
- Ganti
ENTRYPOINT
container (perintah default untuk dijalankan saat container dimulai). - Teruskan argumen ke perintah
ENTRYPOINT
container. - Jalankan container dalam mode dilindungi.
- instal direktori host atau
tmpfs
sebagai volume data di dalam container. - Tetapkan variabel lingkungan.
- Alokasikan buffering untuk
STDIN
dalam runtime container. - Alokasikan pseudo-TTY.
- Pelajari cara mengonfigurasi opsi untuk menjalankan container.
- Pelajari grup instance terkelola lebih lanjut.
- Pelajari Container-Optimized OS.
Memilih untuk men-deploy container pada VM dan MIG
Dengan men-deploy container di Compute Engine, Anda dapat menyederhanakan deployment aplikasi sambil mengontrol infrastruktur VM.
Atau, Anda dapat mempertimbangkan untuk men-deploy ke Google Kubernetes Engine untuk:
Menjalankan setiap microservice pada virtual machine (VM) terpisah di Compute Engine dapat membuat overhead sistem operasi menjadi bagian signifikan biaya Anda. Google Kubernetes Engine memungkinkan Anda men-deploy beberapa container dan grup container untuk setiap instance VM, yang dapat mengalokasikan resource VM host secara lebih efisien ke microservice dengan jejak yang lebih kecil.
Cara kerja deployment container di Compute Engine
Metode umum untuk men-deploy software ke instance VM Compute Engine meliputi:
Kedua metode di atas menggabungkan tugas mengonfigurasi aplikasi dan menyiapkan lingkungan sistem operasi. Sebagai developer, Anda harus melacak dan menyelesaikan setiap dependensi runtime dengan cermat. Misalnya, jika dua aplikasi yang berjalan di VM menggunakan versi berbeda library yang sama, Anda harus menginstal kedua versi dan mengarahkannya melalui variabel sistem.
Atau, Anda dapat men-deploy software dalam container ke instance VM atau ke MIG. Container membawa software aplikasi dan library yang diperlukan, serta diisolasi dari aplikasi dan library OS. Container dapat dengan mudah dipindahkan antara lingkungan deployment tanpa berurusan dengan versi library yang bertentangan di container dan OS-nya.
Proses berikut menjelaskan cara men-deploy container di Compute Engine:
Compute Engine menjalankan tugas-tugas berikut setelah Anda membuat permintaan untuk membuat instance VM:
Batasan
Menyiapkan container untuk deployment
Pilih salah satu pendekatan berikut agar image container Anda dapat diakses oleh Compute Engine:
Men-deploy container pada instance VM baru
Anda dapat men-deploy container pada instance VM baru menggunakan konsol Google Cloud atau Google Cloud CLI.
Konsol
Contoh berikut men-deploy container dari image Nginx Docker yang disediakan Google,
https://gcr.io/cloud-marketplace/google/nginx1:latest
, ke instance VM. Untuk menggunakan image Docker yang berbeda, tentukan image yang Anda inginkan pada contoh di bawah.gcloud
Gunakan perintah
gcloud compute instances create-with-container
:gcloud compute instances create-with-container VM_NAME \ --container-image DOCKER_IMAGE
Misalnya, perintah berikut membuat instance VM baru bernama
nginx-vm
, yang meluncurkan dan menjalankan image Dockergcr.io/cloud-marketplace/google/nginx1:latest
.gcloud compute instances create-with-container nginx-vm \ --container-image gcr.io/cloud-marketplace/google/nginx1:latest
Pelajari perintah
gcloud compute instances create-with-container
lebih lanjut.Anda harus selalu menentukan nama image Docker lengkap saat menggunakan image publik dari Docker Hub. Misalnya, tentukan nama image berikut untuk men-deploy image container Apache:
docker.io/httpd:2.4
Mengupdate container pada instance VM
Anda dapat mengupdate image Docker dan opsi konfigurasi untuk menjalankan container pada instance VM menggunakan konsol Google Cloud atau Google Cloud CLI.
Saat Anda mengupdate VM yang menjalankan container, Compute Engine melakukan dua langkah:
Konsol
gcloud
Update deklarasi container menggunakan perintah
gcloud compute instances update-container
. Contoh:gcloud compute instances update-container nginx-vm \ --container-image gcr.io/cloud-marketplace/google/nginx1:latest
Perintah ini menetapkan image container ke
gcr.io/cloud-marketplace/google/nginx1:latest
dan memulai ulang instance untuk mengaktifkan perubahan. Anda juga dapat mengupdate properti apa pun yang dijelaskan dalam Mengonfigurasi opsi untuk menjalankan container dengan menambahkan flag yang sesuai.Setelah instance dimulai ulang, instance akan mendownload image container baru dan memulai container dengan konfigurasi baru.
Men-deploy container pada grup instance terkelola
Anda dapat men-deploy container ke grup instance terkelola (MIG) baru menggunakan konsol Google Cloud atau Google Cloud CLI dengan mengikuti langkah-langkah berikut:
Konsol
Contoh berikut membuat template instance yang men-deploy container dari image Docker Nginx (
gcr.io/cloud-marketplace/google/nginx1:15
) yang disediakan Google ke MIG. Untuk menggunakan image Docker lainnya, tentukan gambar yang Anda inginkan, bukangcr.io/cloud-marketplace/google/nginx1:15
, pada contoh berikut.Selanjutnya, buat MIG yang menggunakan template instance baru.
gcloud
Buat template instance untuk menjalankan image Docker menggunakan perintah
gcloud compute instance-templates create-with-container
:gcloud compute instance-templates create-with-container TEMPLATE_NAME \ --container-image DOCKER_IMAGE
Anda juga dapat mengonfigurasi opsi untuk menjalankan container jika diinginkan.
Misalnya, perintah berikut akan membuat template instance baru dengan nama
nginx-template
, yang menyertakan informasi tentang image Docker. Instance VM yang dibuat dari template ini akan diluncurkan dan menjalankan image Dockergcr.io/cloud-marketplace/google/nginx1:15
saat VM dimulai.gcloud compute instance-templates create-with-container nginx-template \ --container-image gcr.io/cloud-marketplace/google/nginx1:15
Selanjutnya, buat MIG menggunakan template instance baru.
Setelah memiliki template instance, Anda dapat membuat MIG yang menggunakan template instance. Misalnya, untuk membuat MIG menggunakan gcloud CLI dan
nginx-template
yang baru saja Anda buat, jalankan perintah berikut:gcloud compute instance-groups managed create example-group \ --base-instance-name nginx-vm \ --size 3 \ --template nginx-template
Mengupdate grup instance terkelola yang menjalankan container
Anda dapat mengupdate grup instance terkelola (MIG) untuk men-deploy image Docker versi baru atau versi baru image Container-Optimized OS.
Mengupdate MIG ke versi baru image container
Anda dapat men-deploy image Docker versi baru ke MIG menggunakan Updater Grup Instance Terkelola, dalam tiga langkah:
Mengupdate grup instance terkelola ke versi baru image Container-Optimized OS
Google mengupdate image Container-Optimized OS secara teratur, dan sebaiknya terapkan update tersebut ke MIG dalam container tanpa mengubah image Docker Anda. Anda dapat mengupdate MIG ke versi baru image Container-Optimized OS menggunakan konsol Google Cloud atau Google Cloud CLI dalam dua langkah:
Menghubungkan ke container menggunakan SSH
Anda dapat terhubung ke container di VM dengan menggunakan SSH. Gunakan gcloud CLI untuk menjalankan
gcloud compute ssh
dengan flag--container
:gcloud compute ssh VM_NAME --container CONTAINER_NAME
Ganti kode berikut:
Pelajari perintah
gcloud compute ssh
dan argumennya lebih lanjut.Memantau container di Compute Engine
Untuk memantau instance yang menjalankan image Container-Optimized OS, gunakan agen Pendeteksi Masalah Node, yang berkomunikasi dengan Cloud Monitoring dan melaporkan metrik terkait kesehatan. Agen ini dibangun ke dalam image Container-Optimized OS mulai dari Milestone 77.
Untuk mengaktifkan agen, dalam container yang menggunakan dengan Milestone 88 atau yang lebih baru, edit bagian metadata kustom dan tetapkan
google-monitoring-enabled
ketrue
.Untuk menemukan cara lain mengaktifkan Pendeteksi Masalah Node, buka Mengaktifkan pemantauan kondisi.
Agen Pendeteksi Masalah Node mendukung metrik dalam daftar metrik yang dimulai dengan
guest/
.Untuk berinteraksi dengan metrik yang dikumpulkan oleh agen, kunjungi Metrics Explorer.
Melihat log
Anda dapat melihat tiga jenis log yang terkait dengan container:
Melihat log agen startup
Log agen startup tersedia di konsol serial, melalui layanan sistem
journald
yang disertakan dalam image OS, dan melalui Cloud Logging.Melihat log agen startup di konsol serial
Konsol
gcloud
Gunakan perintah
get-serial-port-output
untuk melihat log pada port serial instance.gcloud compute instances get-serial-port-output VM_NAME
Ganti
VM_NAME
dengan nama instance VM.Misalnya, gunakan perintah berikut untuk melihat output port serial instance VM bernama
nginx-vm
:gcloud compute instances get-serial-port-output nginx-vm
Melihat log agen startup di
journald
Melihat log agen startup di Logging
Konsol
gcloud
Gunakan perintah
gcloud logging read
dengan filter yang sesuai untuk melihat log agen startup container.gcloud logging read "resource.type=gce_instance AND \ logName=projects/PROJECT_ID/logs/cos_system AND \ jsonPayload.SYSLOG_IDENTIFIER=konlet-startup AND \ jsonPayload._HOSTNAME=VM_NAME"
Ganti kode berikut:
Misalnya, gunakan perintah berikut untuk melihat 10 log agen startup terakhir di Logging untuk instance VM bernama
nginx-vm
yang menjalankan COS 70 dan yang ada dimy-project
.gcloud logging read "resource.type=gce_instance AND \ logName=projects/my-project/logs/cos_system AND \ jsonPayload.SYSLOG_IDENTIFIER=konlet-startup AND \ jsonPayload._HOSTNAME=nginx-vm" \ --limit 10
Melihat log aktivitas Docker
Anda dapat melihat log aktivitas Docker di
journald
dan di Cloud Logging.Melihat log aktivitas Docker di
journald
Melihat log aktivitas Docker di Logging
Konsol
gcloud
Gunakan perintah
gcloud logging read
dengan filter yang sesuai untuk melihat log aktivitas Docker.gcloud logging read "resource.type=gce_instance AND \ logName=projects/PROJECT_ID/logs/cos_system AND \ jsonPayload._HOSTNAME=VM_NAME AND \ jsonPayload.SYSLOG_IDENTIFIER=docker"
Ganti kode berikut:
Misalnya, gunakan perintah berikut untuk melihat 10 log aktivitas Docker terakhir di Logging untuk instance VM bernama
nginx-vm
yang menjalankan COS 70 dan yang ada dimy-project
.gcloud logging read "resource.type=gce_instance AND \ logName=projects/my-project/logs/cos_system AND \ jsonPayload._HOSTNAME=nginx-vm AND \ jsonPayload.SYSLOG_IDENTIFIER=docker" \ --limit 10
Melihat log container
Konsol
gcloud
Gunakan perintah
gcloud logging read
untuk melihat log container.Menentukan image atau kelompok imager yang dioptimalkan untuk container
Instance VM dalam container atau template instance dibuat untuk menggunakan image yang dioptimalkan untuk container terbaru yang didukung secara default. Image ini termasuk dalam project
cos-cloud
.Anda dapat mengganti default ini dengan image lain dari project
cos-cloud
. Untuk mengetahui informasi tentang kelompok image yang tersedia dan atributnya, baca Memilih versi Container-Optimized OS yang tepat.Misalnya, setelah Anda mengetahui image mana yang ingin digunakan, di gcloud CLI, berikan flag
--image
untuk mengganti image default yang dioptimalkan container atau berikan flag--image-family
untuk memilih image terbaru dari kelompok yang ditentukan pada waktu pembuatan VM.Contoh berikut akan membuat instance VM dalam container yang menggunakan gambar terbaru dari kelompok gambar
cos-dev
:gcloud compute instances create-with-container nginx-vm \ --image-family cos-dev \ --image-project cos-cloud \ --container-image gcr.io/cloud-marketplace/google/nginx1:1.15
Mengonfigurasi aturan firewall
VM dalam container meluncurkan container yang jaringannya ditetapkan ke mode host. Container berbagi stack jaringan host, dan semua antarmuka dari host tersedia untuk container tersebut.
Secara default, aturan firewall Google Cloud akan memblokir semua koneksi masuk ke instance VM dan mengizinkan semua koneksi keluar dari instance VM.
Buat aturan firewall untuk mengizinkan koneksi masuk ke instance Anda dan juga ke container.
Mengonfigurasi opsi untuk menjalankan container
Anda dapat mengonfigurasi opsi berikut untuk menjalankan container:
Pelajari lebih lanjut cara mengonfigurasi opsi untuk menjalankan container Anda.
Langkah berikutnya
Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2024-12-22 UTC.
-