Sebelum memulai
- Jika Anda belum memahami container, baca Container di Compute Engine.
- Jika Anda belum memahami Docker, baca dokumentasi Docker.
- Baca cara Men-deploy container di Compute Engine.
-
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.
Buka halaman Create an instance template.
Di bagian Container, pilih kotak centang Deploy a container image to this VM instance, lalu luaskan Advanced container options.
- Di Google Cloud CLI, gunakan perintah
gcloud compute instance-templates create-with-container
seperti yang ditunjukkan dalam contoh berikut. Buka halaman Create an instance.
Di bagian Container, klik Deploy container.
Di halaman Configure container, lakukan tindakan berikut:
- Tentukan nama image container.
- Di bagian Restart policy, pilih kebijakan mulai ulang untuk container.
- Untuk mengonfirmasi detail container, klik Select.
Lanjutkan dengan proses pembuatan VM.
always
(default)on-failure
never
Buka halaman Create an instance.
Di bagian Container, klik Deploy container.
Di halaman Configure container, lakukan tindakan berikut:
- Tentukan nama image container.
- Pilih Run as privileged.
- Untuk mengonfirmasi detail container, klik Select.
Lanjutkan dengan proses pembuatan VM.
Buka halaman Create an instance.
Di bagian Container, klik Deploy container.
Di halaman Configure container, lakukan tindakan berikut:
- Tentukan nama image container.
- Pilih Allocate a buffer for STDIN.
- Untuk mengonfirmasi detail container, klik Select.
Lanjutkan dengan proses pembuatan VM.
Buka halaman Create an instance.
Di bagian Container, klik Deploy container.
Di halaman Configure container, lakukan tindakan berikut:
- Tentukan nama image container.
- Pilih Allocate a pseudo-TTY.
- Untuk mengonfirmasi detail container, klik Select.
Lanjutkan dengan proses pembuatan VM.
Buka halaman Create an instance.
Di bagian Container, klik Deploy container.
Di halaman Configure container, lakukan tindakan berikut:
- Tentukan nama image container.
- Di kolom Command, masukkan satu perintah yang dapat dieksekusi tanpa parameter—misalnya,
uptime
. - Untuk mengonfirmasi detail container, klik Select.
Lanjutkan dengan proses pembuatan VM.
Buka halaman Create an instance.
Di bagian Container, klik Deploy container.
Di halaman Configure container, lakukan tindakan berikut:
- Tentukan nama image container.
- Di bagian Arguments, klik Add argument.
- Masukkan satu argumen perintah untuk setiap kotak.
- Untuk mengonfirmasi detail container, klik Select.
Lanjutkan dengan proses pembuatan VM.
Buka halaman Create an instance.
Di bagian Container, klik Deploy container.
Di halaman Configure container, lakukan tindakan berikut:
- Tentukan nama image container.
- Di bagian Environment variables, klik Add variable.
- Tambahkan atau hapus variabel lingkungan jika diperlukan, satu variabel untuk setiap baris.
- Untuk mengonfirmasi detail container, klik Select.
Lanjutkan dengan proses pembuatan VM.
Buka halaman Create an instance.
Di bagian Container, klik Deploy container.
Di halaman Configure container, lakukan tindakan berikut:
- Tentukan nama image container.
- Di bagian Volume mounts, klik Add volume.
Dari daftar Volume type, pilih Directory, dan lakukan langkah berikut:
- Di kolom Mount path, tentukan jalur pemasangan di struktur direktori container tempat direktori host akan dipasang.
- Di kolom Host path, tentukan jalur host ke direktori host yang akan dipasang.
- Dalam daftar Mode, tentukan apakah akan memasang direktori dalam mode baca/tulis atau hanya baca.
Untuk mengonfirmasi detail container, klik Select.
Lanjutkan dengan proses pembuatan VM.
Buka halaman Create an instance.
Di bagian Container, klik Deploy container.
Di halaman Configure container, lakukan tindakan berikut:
- Tentukan nama image container.
- Di bagian Volume mounts, klik Add volume.
- Dari daftar Volume type, pilih TmpFS.
- Di kolom Mount path, tentukan jalur pemasangan di struktur direktori container tempat Anda ingin memasang volume TmpFS.
- Dalam daftar Mode, tentukan apakah akan memasang volume TmpFS dalam mode baca/tulis atau hanya baca.
- Untuk mengonfirmasi detail container, klik Select.
Lanjutkan dengan proses pembuatan VM.
- Disk harus memiliki sistem file
ext4
atau tidak memiliki sistem file. Tanpa sistem file awal, agen startup container akan memformat disk menjadiext4
. Hanya lampiran baca/tulis dan pemasangan yang didukung. - Disk harus dilampirkan ke VM.
Perangkat maupun partisi tanpa partisi didukung. Untuk pemasangan partisi, disk tidak boleh kosong; disk itu harus berisi tabel partisi yang sudah ada.
Buka halaman Create an instance.
Di bagian Container, klik Deploy container.
Di halaman Configure container, lakukan tindakan berikut:
- Tentukan nama image container.
- Di bagian Volume mounts, klik Add volume.
- Dari daftar Volume type, pilih Disk.
- Di kolom Mount path, tentukan jalur di struktur direktori container tempat Anda ingin memasang persistent disk.
- Dari daftar Disk name, pilih disk yang sudah ada untuk dipasang.
- Di kolom Partition, tentukan nomor partisi yang akan dipasang jika disk memiliki tabel partisi. Jika disk tidak memiliki partisi, kosongkan kolom ini.
- Dalam daftar Mode, tentukan apakah akan memasang direktori dalam mode baca/tulis atau hanya baca.
- Untuk mengonfirmasi detail container, klik Select.
Lanjutkan dengan proses pembuatan VM.
Buat instance VM dengan container NGINX:
gcloud compute instances create-with-container nginx-vm \ --container-image gcr.io/cloud-marketplace/google/nginx1:1.15 \ --tags http-server
Container berbagi stack jaringan VM host, dan port 80 container dipublikasikan ke port 80 VM host. Tag
http-server
digunakan sebagai tag target untuk aturan firewall, yang dibuat pada langkah berikutnya.Buat aturan firewall untuk mengaktifkan koneksi ke port 80 instance VM. Aturan firewall berikut mengizinkan koneksi HTTP ke instance VM dengan tag
http-server
.gcloud compute firewall-rules create allow-http \ --allow tcp:80 --target-tags http-server
Container secara otomatis mulai menerima traffic di port 80. Anda tidak perlu melakukan konfigurasi tambahan apa pun.
Anda dapat membuat aturan firewall untuk kombinasi protokol:port VM host dengan protokolnya adalah
tcp
atauudp
. Aturan ini mengatur akses secara efektif dari luar VM ke port container yang sesuai.- Pelajari cara men-deploy container Docker di Compute Engine.
- Pelajari Container-Optimized OS.
Saat Anda membuat instance atau template instance yang akan digunakan untuk Men-deploy container pada VM dan MIG, tentukan konfigurasi container menggunakan konsol Google Cloud atau Google Cloud CLI.
Bagian berikut menjelaskan cara mengonfigurasi opsi untuk instance VM, tetapi Anda juga dapat mengonfigurasi opsi berikut saat membuat template instance. Gunakan konsol Google Cloud atau Google Cloud CLI untuk mengonfigurasi opsi untuk instance VM di template instance.
Konsol
gcloud
Menentukan kebijakan mulai ulang
Anda dapat menetapkan kebijakan mulai ulang untuk menentukan apakah akan memulai ulang container saat keluar. Kebijakan defaultnya adalah selalu memulai ulang. Anda juga dapat memilih kebijakan untuk memulai ulang jika gagal atau jangan pernah memulai ulang.
Konsol
gcloud
Gunakan flag
--container-restart-policy
untuk menentukan kebijakan mulai ulang container:Contoh berikut meluncurkan container dengan kebijakan mulai ulang
on-failure
, yang berarti mulai ulang hanya terjadi jika kode keluar container bukan nol:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-restart-policy on-failure
Gunakan perintah
gcloud compute instances update-container
dengan flag--container-restart-policy
untuk kebijakan mulai ulang pada container yang berjalan di VM.Menjalankan container dalam mode hak istimewa
Anda dapat menjalankan container dalam mode hak istimewa untuk mengizinkan akses ke semua perangkat di host. Container dijalankan sebagai "tidak memiliki hak istimewa" secara default dan tidak diizinkan untuk mengakses perangkat apa pun.
Konsol
gcloud
Gunakan flag
--container-privileged
untuk menjalankan container dengan hak istimewa runtime. Contoh berikut meluncurkan container busybox dalam mode hak istimewa:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-privileged
Gunakan perintah
gcloud compute instances update-container
dengan flag--container-privileged
untuk memperbarui container pada VM. Gunakan flag--no-container-privileged
untuk menonaktifkan mode hak istimewa.Mengalokasikan buffer untuk STDIN dalam runtime container
Anda dapat mengalokasikan buffer untuk
STDIN
di runtime container agar aliranSTDIN
tetap terbuka dalam container. Jika tidak ditetapkan, operasi baca dariSTDIN
dalam container akan selalu menghasilkanEOF
.Selain mengalokasikan pseudo-TTY, menjaga aliran
STDIN
tetap terbuka diperlukan untuk membuat shell interaktif dalam container dan agar container dapat menerima input standarnya dari pipa.Konsol
gcloud
Gunakan flag
--container-stdin
guna mengalokasikan buffer untukSTDIN
dalam runtime container. Contoh berikut memulai container dan menjagaSTDIN
-nya tetap terbuka:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-stdin
Gunakan perintah
gcloud compute instances update-container
dengan flag--container-stdin
untuk memperbarui container pada VM. Gunakan flag--no-container-stdin
guna menonaktifkan alokasi buffer untukSTDIN
.Mengalokasikan pseudo-TTY
Mengalokasikan pseudo-TTY untuk container diperlukan untuk membuat shell interaktif dalam container (bersama dengan mengalokasikan buffer untuk STDIN).
Konsol
gcloud
Gunakan flag
--container-tty
untuk mengalokasikan pseudo-TTY. Contoh berikut memulai container dan mengalokasikan pseudo-TTY:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-stdin \ --container-tty
Gunakan perintah
gcloud compute instances update-container
dengan flag--container-tty
untuk memperbarui container pada VM. Gunakan flag--no-container-tty
untuk tidak mengalokasikan pseudo-TTY.Mengganti perintah default untuk dijalankan saat startup container
ENTRYPOINT
dari image container menentukan perintah yang dapat dieksekusi yang akan dijalankan saat container dimulai dan memungkinkan Anda menjalankan container seolah-olah perintah itu adalah biner.Anda dapat mengganti perintah
ENTRYPOINT
dari image container.Konsol
gcloud
Gunakan flag
--container-command
untuk mengganti image containerENTRYPOINT
. Contoh berikut menjalankan perintahuptime
dalam container busybox untuk menampilkan waktu sejak booting terakhir:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-command "uptime"
Gunakan perintah
gcloud compute instances update-container
dengan flag--container-command
guna memperbarui perintah untuk container di VM.Gunakan flag
--clear-container-command
dengan perintahupdate-container
guna menghapus perintah default untuk container yang diperbarui.Meneruskan argumen ke perintah ENTRYPOINT container
Anda dapat meneruskan (menambahkan) argumen ke perintah
ENTRYPOINT
container atau mengganti perintahCMD
container default.Konsol
gcloud
Gunakan flag
--container-arg
untuk meneruskan argumen ke perintahENTRYPOINT
image container. Menggunakan flag terpisah untuk setiap argumen.Contoh berikut menjalankan perintah
/bin/ash
dengan argumen-c 'ls -l'
dalam container yang telah disiapkan untuk menjalankan busybox secara otomatis:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-command "/bin/ash" \ --container-arg="-c" \ --container-arg="ls -l"
Gunakan perintah
gcloud compute instances update-container
dengan flag--container-arg
guna memperbarui argumen perintah untuk container yang berjalan di VM. Pembaruan ini akan menggantikan seluruh daftar argumen dengan daftar baru.Gunakan flag
--clear-container-args
dengan perintahupdate-container
untuk menghapus semua argumen dari deklarasi container.Mengonfigurasi opsi driver log
Jika perlu mengonfigurasi opsi driver log, Anda dapat membuat skrip startup VM untuk memperbarui file konfigurasi Docker dengan opsi logging yang Anda perlukan. Opsi ini berlaku untuk semua container yang berjalan di VM dan yang tidak menentukan opsi driver log.
Misalnya, skrip startup berikut menetapkan beberapa opsi, termasuk opsi untuk membatasi ukuran log container, lalu memulai ulang Docker di VM:
cat <<EOF > /etc/docker/daemon.json { "live-restore": true, "storage-driver": "overlay2", "log-opts": { "max-size": "10m" } } EOF systemctl restart docker
Menyetel variabel lingkungan
Anda dapat menetapkan variabel lingkungan dalam container. Hanya nilai terakhir dari
KEY
yang diambil saatKEY
diulang lebih dari sekali.Konsol
gcloud
Gunakan flag
--container-env
untuk menetapkan variabel lingkungan dalam container. Contoh berikut menetapkan tiga variabel lingkungan:HOME
,MODE
, danOWNER
:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-env HOME=/home,MODE=test,OWNER=admin
Gunakan flag
--container-env-file
untuk menetapkan variabel lingkungan dari file lokal. Contoh berikut menetapkan dua variabel lingkungan dari fileenv.txt
:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-env-file ./env.txt
Isi file
env.txt
adalah:# this is a comment HOME=/home MODE=test OWNER=admin
Gunakan perintah
gcloud compute instances update-container
dengan flag--container-env
atau--container-env-file
untuk memperbarui variabel lingkungan untuk container di VM. Tindakan ini akan memperbarui variabel apa pun yang ada dalam deklarasi container instance VM. Variabel yang tidak ada dalam deklarasi container akan ditambahkan.Gunakan flag
--remove-container-env
untuk menghapus variabel lingkungan saat mengupdate container pada VM. Contoh berikut menghapus variabel lingkungan yang disebutMODE
danOWNER
:gcloud compute instances update-container busybox-vm \ --remove-container-env MODE,OWNER
Jika variabel lingkungan yang ditentukan tidak ada, variabel tersebut akan diabaikan secara diam-diam.
Memasang direktori host sebagai volume data
Anda dapat memasang direktori dari VM host ke dalam container.
Konsol
gcloud
Gunakan flag
--container-mount-host-path
untuk memasang direktori VM host ke dalam container. Contoh berikut memasang direktori host/tmp
ke dalam container di/logs
dalam mode baca/tulis:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-mount-host-path mount-path=/logs,host-path=/tmp,mode=rw
Tentukan
mode=ro
untuk memasang direktori host dalam mode hanya baca.Gunakan perintah
gcloud compute instances update-container
dengan flag--container-mount-host-path
untuk memperbarui direktori host yang terpasang pada container. Menggunakan flag--remove-container-mounts
untuk menghapus pemasangan volume dengan jalur pemasangan yang ditentukan. Contoh berikut menghapus pemasangan jalur host denganmount-path=/logs
:gcloud compute instances update-container busybox-vm \ --remove-container-mounts /logs
Jika jalur pemasangan yang ditentukan tidak ada, jalur tersebut akan diabaikan secara diam-diam.
Memasang sistem file tmpfs sebagai volume data
Anda dapat memasang sistem file tmpfs kosong ke dalam container.
Konsol
gcloud
Gunakan flag
--container-mount-tmpfs
untuk memasang sistem filetmpfs
kosong ke dalam container. Contoh berikut memasang sistem filetmpfs
ke dalam container di/cache
dalam mode baca/tulis:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-mount-tmpfs mount-path=/cache
Gunakan perintah
gcloud compute instances update-container
dengan flag--container-mount-tmpfs
untuk memperbarui pemasangantmpfs
pada container. Gunakan flag--remove-container-mounts
untuk menghapus pemasangantmpfs
dengan jalur pemasangan yang ditentukan saat mengupdate. Contoh berikut menghapus pemasangantmpfs
denganmount-path=/cache
:gcloud compute instances update-container busybox-vm \ --remove-container-mounts /cache
Jika jalur pemasangan yang ditentukan tidak ada, jalur tersebut akan diabaikan secara diam-diam.
Memasang persistent disk sebagai volume data
Dengan Container-Optimized OS 69 atau yang lebih baru, Anda dapat memasang persistent disk dari VM host ke dalam container.
Prasyarat
Konsol
gcloud
Gunakan perintah
gcloud compute instances create-with-container
atau perintahgcloud compute instances update-container
dengan flag--container-mount-disk
untuk memasang persistent disk ke dalam kontainer.Contoh berikut memasang dua disk,
my-data-disk
danmy-scratch-disk
, ke dalam container di jalur pemasangan/disks/data-disk
dan/disks/scratch-disk
.gcloud compute instances create-with-container busybox-vm \ --disk name=my-data-disk \ --create-disk name=my-scratch-disk,auto-delete=yes,image=ubuntu-1710-artful-v20180315,image-project=ubuntu-os-cloud \ --container-image docker.io/busybox:1.27 \ --container-mount-disk mount-path="/disks/data-disk",name=my-data-disk,mode=ro \ --container-mount-disk mount-path="/disks/scratch-disk",name=my-scratch-disk
Perlu diperhatikan bahwa flag
--disk
melampirkanmy-data-disk
, flag--create-disk
membuat dan melampirkanmy-scatch-disk
, dan flag--container-mount-disk
memasang disk yang terpasang ke container. Karenamode
tidak ditentukan untukmy-scratch-disk
, disk tersebut dipasang ke container dalam mode baca/tulis secara default.Gunakan perintah
gcloud compute instances update-container
dengan flag--container-mount-disk
untuk memasang disk tambahan yang terlampir atau untuk memodifikasi pemasangan disk yang sudah ada.Gunakan flag
--remove-container-mounts
untuk menghapus pemasangan volume disk dengan jalur pemasangan yang ditentukan. Contoh berikut mengubah mode pemasanganmy-data-disk
menjadi baca/tulis dan menghapus pemasangan disk denganmount-path="/disks/scratch-disk"
.gcloud compute instances update-container busybox-vm \ --container-mount-disk mount-path="/disks/data-disk",name=my-data-disk,mode=rw \ --remove-container-mounts "/disks/scratch-disk"
Jika jalur pemasangan yang Anda teruskan ke flag
--remove-container-mounts
tidak ada, jalur tersebut akan diabaikan secara diam-diam.Memublikasikan port container
VM dengan container menggunakan mode jaringan host, dengan container berbagi stack jaringan host dan semua antarmuka dari host tersedia untuk container.
Port container memiliki pemetaan one-to-one ke port VM host. Misalnya, port container 80 dipetakan ke port VM host 80. Compute Engine tidak mendukung flag publikasi port (
-p
), dan Anda tidak perlu menentukannya agar pemetaan dapat berfungsi.Guna memublikasikan port container, konfigurasikan aturan firewall untuk mengaktifkan akses ke port instance VM host. Port container yang sesuai dapat diakses secara otomatis, sesuai dengan aturan firewall.
Contoh: Memublikasikan port 80 untuk container NGINX
Contoh berikut menunjukkan cara membuat instance VM dengan container NGINX dan mengizinkan traffic ke port 80 container.
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-11-27 UTC.
-