Mengonfigurasi opsi untuk menjalankan container Anda


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.
  • Siapkan autentikasi, jika Anda belum melakukannya. Autentikasi adalah proses verifikasi identitas Anda untuk akses ke layanan dan API Google Cloud. Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine sebagai berikut.

    Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:

    Konsol

    Saat menggunakan Konsol Google Cloud untuk mengakses API dan layanan Google Cloud, Anda tidak perlu menyiapkan autentikasi.

    gcloud

    1. Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

      gcloud init
    2. Menetapkan region dan zona default.

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

  1. Buka halaman Create an instance template.

    Buka Create an instance template.

  2. Di bagian Container, pilih kotak centang Deploy a container image to this VM instance, lalu luaskan Advanced container options.

gcloud

  1. Di Google Cloud CLI, gunakan perintah gcloud compute instance-templates create-with-container seperti yang ditunjukkan dalam contoh berikut.

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

  1. Buka halaman Create an instance.

    Buka Create an instance

  2. Di bagian Container, klik Deploy container.

  3. Di halaman Configure container, lakukan tindakan berikut:

    1. Tentukan nama image container.
    2. Di bagian Restart policy, pilih kebijakan mulai ulang untuk container.
    3. Untuk mengonfirmasi detail container, klik Select.
  4. Lanjutkan dengan proses pembuatan VM.

gcloud

Gunakan flag --container-restart-policy untuk menentukan kebijakan mulai ulang container:

  • always (default)
  • on-failure
  • never

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

  1. Buka halaman Create an instance.

    Buka Create an instance

  2. Di bagian Container, klik Deploy container.

  3. Di halaman Configure container, lakukan tindakan berikut:

    1. Tentukan nama image container.
    2. Pilih Run as privileged.
    3. Untuk mengonfirmasi detail container, klik Select.
  4. Lanjutkan dengan proses pembuatan VM.

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 aliran STDIN tetap terbuka dalam container. Jika tidak ditetapkan, operasi baca dari STDIN dalam container akan selalu menghasilkan EOF.

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

  1. Buka halaman Create an instance.

    Buka Create an instance

  2. Di bagian Container, klik Deploy container.

  3. Di halaman Configure container, lakukan tindakan berikut:

    1. Tentukan nama image container.
    2. Pilih Allocate a buffer for STDIN.
    3. Untuk mengonfirmasi detail container, klik Select.
  4. Lanjutkan dengan proses pembuatan VM.

gcloud

Gunakan flag --container-stdin guna mengalokasikan buffer untuk STDIN dalam runtime container. Contoh berikut memulai container dan menjaga STDIN-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 untuk STDIN.

Mengalokasikan pseudo-TTY

Mengalokasikan pseudo-TTY untuk container diperlukan untuk membuat shell interaktif dalam container (bersama dengan mengalokasikan buffer untuk STDIN).

Konsol

  1. Buka halaman Create an instance.

    Buka Create an instance

  2. Di bagian Container, klik Deploy container.

  3. Di halaman Configure container, lakukan tindakan berikut:

    1. Tentukan nama image container.
    2. Pilih Allocate a pseudo-TTY.
    3. Untuk mengonfirmasi detail container, klik Select.
  4. Lanjutkan dengan proses pembuatan VM.

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

  1. Buka halaman Create an instance.

    Buka Create an instance

  2. Di bagian Container, klik Deploy container.

  3. Di halaman Configure container, lakukan tindakan berikut:

    1. Tentukan nama image container.
    2. Di kolom Command, masukkan satu perintah yang dapat dieksekusi tanpa parameter—misalnya, uptime.
    3. Untuk mengonfirmasi detail container, klik Select.
  4. Lanjutkan dengan proses pembuatan VM.

gcloud

Gunakan flag --container-command untuk mengganti image container ENTRYPOINT. Contoh berikut menjalankan perintah uptime 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 perintah update-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 perintah CMD container default.

Konsol

  1. Buka halaman Create an instance.

    Buka Create an instance

  2. Di bagian Container, klik Deploy container.

  3. Di halaman Configure container, lakukan tindakan berikut:

    1. Tentukan nama image container.
    2. Di bagian Arguments, klik Add argument.
    3. Masukkan satu argumen perintah untuk setiap kotak.
    4. Untuk mengonfirmasi detail container, klik Select.
  4. Lanjutkan dengan proses pembuatan VM.

gcloud

Gunakan flag --container-arg untuk meneruskan argumen ke perintah ENTRYPOINT 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 perintah update-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 saat KEY diulang lebih dari sekali.

Konsol

  1. Buka halaman Create an instance.

    Buka Create an instance

  2. Di bagian Container, klik Deploy container.

  3. Di halaman Configure container, lakukan tindakan berikut:

    1. Tentukan nama image container.
    2. Di bagian Environment variables, klik Add variable.
    3. Tambahkan atau hapus variabel lingkungan jika diperlukan, satu variabel untuk setiap baris.
    4. Untuk mengonfirmasi detail container, klik Select.
  4. Lanjutkan dengan proses pembuatan VM.

gcloud

Gunakan flag --container-env untuk menetapkan variabel lingkungan dalam container. Contoh berikut menetapkan tiga variabel lingkungan: HOME, MODE, dan OWNER:

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 file env.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 disebut MODE dan OWNER:

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

  1. Buka halaman Create an instance.

    Buka Create an instance

  2. Di bagian Container, klik Deploy container.

  3. Di halaman Configure container, lakukan tindakan berikut:

    1. Tentukan nama image container.
    2. Di bagian Volume mounts, klik Add volume.
    3. 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.
    4. Untuk mengonfirmasi detail container, klik Select.

  4. Lanjutkan dengan proses pembuatan VM.

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 dengan mount-path=/logs:

gcloud compute instances update-container busybox-vm \
  --remove-container-mounts /logs

Jika jalur pemasangan yang ditentukan tidak ada, jalur akan diabaikan secara diam-diam.

Memasang sistem file tmpfs sebagai volume data

Anda dapat memasang sistem file tmpfs kosong ke dalam container.

Konsol

  1. Buka halaman Create an instance.

    Buka Create an instance

  2. Di bagian Container, klik Deploy container.

  3. Di halaman Configure container, lakukan tindakan berikut:

    1. Tentukan nama image container.
    2. Di bagian Volume mounts, klik Add volume.
    3. Dari daftar Volume type, pilih TmpFS.
    4. Di kolom Mount path, tentukan jalur pemasangan di struktur direktori container tempat Anda ingin memasang volume TmpFS.
    5. Dalam daftar Mode, tentukan apakah akan memasang volume TmpFS dalam mode baca/tulis atau hanya baca.
    6. Untuk mengonfirmasi detail container, klik Select.
  4. Lanjutkan dengan proses pembuatan VM.

gcloud

Gunakan flag --container-mount-tmpfs untuk memasang sistem file tmpfs kosong ke dalam container. Contoh berikut memasang sistem file tmpfs 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 pemasangan tmpfs pada container. Gunakan flag --remove-container-mounts untuk menghapus pemasangan tmpfs dengan jalur pemasangan yang ditentukan saat mengupdate. Contoh berikut menghapus pemasangan tmpfs dengan mount-path=/cache:

gcloud compute instances update-container busybox-vm \
  --remove-container-mounts /cache

Jika jalur pemasangan yang ditentukan tidak ada, jalur 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

  • Disk harus memiliki sistem file ext4 atau tidak memiliki sistem file. Tanpa sistem file awal, agen startup container akan memformat disk menjadi ext4. 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.

Konsol

  1. Buka halaman Create an instance.

    Buka Create an instance

  2. Di bagian Container, klik Deploy container.

  3. Di halaman Configure container, lakukan tindakan berikut:

    1. Tentukan nama image container.
    2. Di bagian Volume mounts, klik Add volume.
    3. Dari daftar Volume type, pilih Disk.
    4. Di kolom Mount path, tentukan jalur di struktur direktori container tempat Anda ingin memasang persistent disk.
    5. Dari daftar Disk name, pilih disk yang sudah ada untuk dipasang.
    6. Di kolom Partition, tentukan nomor partisi yang akan dipasang jika disk memiliki tabel partisi. Jika disk tidak memiliki partisi, kosongkan kolom ini.
    7. Dalam daftar Mode, tentukan apakah akan memasang direktori dalam mode baca/tulis atau hanya baca.
    8. Untuk mengonfirmasi detail container, klik Select.
  4. Lanjutkan dengan proses pembuatan VM.

gcloud

Gunakan perintah gcloud compute instances create-with-container atau perintah gcloud compute instances update-container dengan flag --container-mount-disk untuk memasang persistent disk ke dalam kontainer.

Contoh berikut memasang dua disk, my-data-disk dan my-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 melampirkan my-data-disk, flag --create-disk membuat dan melampirkan my-scatch-disk, dan flag --container-mount-disk memasang disk yang terpasang ke container. Karena mode tidak ditentukan untuk my-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 pemasangan my-data-disk menjadi baca/tulis dan menghapus pemasangan disk dengan mount-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.

  1. 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.

  2. 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 atau udp. Aturan ini mengatur akses secara efektif dari luar VM ke port container yang sesuai.

Langkah selanjutnya