Container software adalah cara yang mudah untuk menjalankan aplikasi Anda di beberapa instance ruang pengguna yang terisolasi. Anda dapat menjalankan container di image VM publik Linux atau Windows Server, atau pada image Container-Optimized OS. Container memungkinkan aplikasi Anda berjalan dengan lebih sedikit dependensi di virtual machine (VM) host dan berjalan secara terpisah dari aplikasi dalam container lainnya yang Anda deploy ke instance VM yang sama. Karakteristik ini membuat aplikasi dalam container lebih portabel, lebih mudah di-deploy, dan lebih mudah dikelola dalam skala besar.
Dokumen ini menjelaskan beberapa teknologi container yang lebih umum yang dapat Anda gunakan untuk menjalankan container pada instance Compute Engine. Anda dapat menggunakan teknologi ini pada sebagian besar image VM publik yang disediakan Compute Engine.
Jalankan container di Compute Engine saat Anda memerlukan kontrol penuh atas lingkungan container dan alat orkestrasi container Anda.
Atau, Anda dapat menggunakan Google Kubernetes Engine (GKE) untuk menyederhanakan tugas pengelolaan cluster dan orkestrasi container sehingga Anda tidak perlu mengelola instance VM yang mendasarinya. GKE menyediakan lingkungan terkelola untuk men-deploy, mengelola, dan menskalakan aplikasi dalam container menggunakan infrastruktur Google.
Lingkungan GKE terdiri dari beberapa mesin, (khususnya, instance Compute Engine) yang dikelompokkan bersama untuk membentuk cluster. Saat menjalankan cluster GKE, Anda akan mendapatkan manfaat dari fitur pengelolaan cluster lanjutan seperti load balancing, kumpulan node, perbaikan otomatis node, penskalaan dan upgrade otomatis, serta logging dan pemantauan yang disediakan oleh Google Cloud.
Pelajari cara membuat cluster GKE dengan node pool yang menjalankan Microsoft Windows Server.
Cobalah sendiri
Jika Anda baru pertama kali menggunakan Google Cloud, buat akun untuk mengevaluasi performa Compute Engine dalam skenario dunia nyata. Pelanggan baru mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
Coba Compute Engine gratisTeknologi container yang berjalan di Compute Engine
Secara umum, instance Compute Engine dapat menjalankan hampir semua teknologi atau alat container. Anda dapat menjalankan beberapa jenis container pada sistem operasi Linux modern. Anda juga dapat menjalankan Docker di Windows Server 2016 atau yang lebih baru. Daftar berikut mencakup beberapa alat umum yang dapat Anda gunakan untuk menjalankan dan mengelola aplikasi dalam container:
- Docker dan Podman adalah dua teknologi container populer yang memungkinkan Anda menjalankan aplikasi dalam container.
- Kubernetes adalah platform orkestrasi container yang dapat Anda gunakan untuk mengelola dan menskalakan container yang berjalan di beberapa instance atau dalam lingkungan hybrid cloud.
- Container di Compute Engine memberikan cara mudah untuk men-deploy container ke instance VM Compute Engine atau grup instance terkelola.
- Anda dapat mengonversi sistem yang ada menjadi image LXD dan menjalankannya dalam instance VM Compute Engine untuk solusi migrasi lift-and-shift. LXD berjalan pada image Ubuntu.
Selain itu, Anda dapat menggunakan Artifact Registry untuk mengelola versi image container. Artifact Registry berfungsi sebagai lokasi pusat untuk menyimpan dan mengelola image container Anda sebelum men-deploy image tersebut ke Kubernetes di Compute Engine atau ke cluster Google Kubernetes Engine.
Image VM yang dioptimalkan container
Compute Engine menyediakan beberapa image VM publik yang dapat Anda gunakan untuk membuat instance dan menjalankan workload container. Beberapa image VM publik ini memiliki sistem operasi minimalis yang dioptimalkan untuk container dan menyertakan versi terbaru Docker, Podman, atau Kubernetes. Kelompok image publik berikut dirancang khusus untuk menjalankan container:
- Container-Optimized OS dari Google
- Mencakup: Docker, Kubernetes
- Project image:
cos-cloud
- Kelompok image:
cos-stable
- Fedora CoreOS
- Termasuk: Podman, Docker
- Project image:
fedora-coreos-cloud
- Kelompok image:
fedora-coreos-stable
- Ubuntu
- Termasuk: LXD
- Project image:
ubuntu-os-cloud
- Kelompok image:
ubuntu-2004-lts
Jika Anda perlu menjalankan alat dan teknologi container tertentu pada image yang tidak menyertakannya secara default, instal teknologi tersebut secara manual.
Menginstal teknologi container di instance Anda
Untuk meluncurkan satu container pada instance, Anda dapat menentukan image container saat membuat instance. Compute Engine secara otomatis menyediakan image Container-Optimized OS terbaru dengan Docker yang terinstal dan meluncurkan container Anda saat VM dimulai. Untuk informasi selengkapnya, lihat Men-deploy container pada VM .
Atau, Anda dapat menjalankan workload container di Compute Engine menggunakan teknologi container dan alat orkestrasi apa pun yang Anda butuhkan. Anda dapat membuat instance dari image VM publik, lalu menginstal teknologi container yang Anda inginkan. Contoh:
- Instal Docker di instance Compute Engine sehingga Anda dapat menjalankan image container Docker di instance tersebut.
- Instal Podman di instance Compute Engine sebagai alternatif runtime container Docker.
- Instal Kubernetes pada instance Anda guna menyediakan orkestrasi container untuk container Docker dan Open Container Initiative (OCI).
Dalam beberapa situasi, Anda mungkin memerlukan versi tertentu dari teknologi ini untuk memastikan bahwa teknologi tersebut beroperasi bersama dengan benar. Misalnya, Kubernetes biasanya berjalan paling baik dengan versi Docker tertentu. Biasanya, Anda dapat menginstal versi terbaru teknologi ini untuk mendapatkan hasil terbaik.
Menginstal Docker pada image Windows Server
Windows Server 2016 dan versi yang lebih baru menyertakan dukungan container. Jika berencana untuk menjalankan container Docker di instance Windows Server, Anda dapat menginstal Docker pada image dasar Windows Server atau menggunakan image marketplace dari Mirantis.
Jika Anda ingin menginstal Docker CE pada image dasar Windows Server, ikuti langkah-langkah yang diuraikan di bawah ini.
Mulailah dengan membuat instance Windows Server menggunakan image publik Windows Server 2019 atau yang lebih baru. Untuk dukungan container terbaik, sebaiknya gunakan Windows Server versi LTSC terbaru. Untuk mengetahui informasi selengkapnya tentang LTSC, lihat saluran layanan Windows Server.
Menginstal Docker
Instal Docker di Windows. Untuk mengetahui informasi selengkapnya, lihat Mempersiapkan Windows untuk container. Mulai ulang instance setelah penginstalan selesai.
Langkah penyiapan tambahan
Pada tahap ini, Anda dapat menggunakan Docker untuk menjalankan container dalam instance. Misalnya,
perintah berikut mendownload image container nanoserver
Windows dan
menjalankan command prompt di dalam container nanoserver
:
PS C:\> docker run -it mcr.microsoft.com/windows/nanoserver:1809 cmd.exe
MTU jaringan default Docker adalah 1.500 byte. Jika Anda juga telah mengonfigurasi MTU jaringan VPC hingga 1.500 byte, Anda dapat mengabaikan sisa bagian ini. Namun, jika menggunakan MTU VPC default sebesar 1.460 byte di jaringan Anda, Anda harus melakukan beberapa konfigurasi tambahan pada setiap instance.
Tetapkan MTU untuk semua antarmuka jaringan (baik
Ethernet dan vEthernet) ke 1460
dengan menjalankan perintah berikut di
terminal PowerShell pada setiap instance:
PS C:\> Get-NetAdapter | Where-Object Name -like "*Ethernet*" | ForEach-Object {
& netsh interface ipv4 set subinterface $_.InterfaceIndex mtu=1460 store=persistent
}
PS C:\> netsh interface ipv4 show subinterfaces MTU MediaSenseState Bytes In Bytes Out Interface ------ --------------- --------- --------- ------------- 4294967295 1 0 0 Loopback Pseudo-Interface 1 1460 1 306804 668688 Ethernet 1460 1 0 1282 vEthernet (nat)
Bahkan setelah mengubah MTU instance, konektivitas dari container ke
internet mungkin tidak stabil karena secara default, antarmuka jaringan
container juga menggunakan MTU 1500
. Untuk mengetahui perintah dalam menetapkan MTU dengan benar bagi setiap container, lihat bagian MTU container.
Anda mungkin perlu menjalankan kembali perintah MTU ini secara berkala saat mengonfigurasi jaringan Docker. Untuk mengetahui detail selengkapnya, lihat bagian masalah umum.
Menjalankan container Windows
Ada banyak resource yang tersedia untuk memulai container Windows:
- Microsoft menyediakan dokumentasi container Windows yang lengkap.
Docker Hub dapat digunakan sebagai repositori untuk menyimpan dan menarik container Windows.
Masalah umum pada container Windows
Penghentian penggunaan Windows Server 2019 untuk image Containers
Google menawarkan kelompok image Windows Server dengan Mirantis Container Runtime (sebelumnya Docker EE) yang telah terinstal:
- Windows
- Termasuk: Docker
- Project image:
windows-cloud
- Kelompok image:
windows-2019-core-for-containers
Pada awal 2023, Microsoft berhenti mendistribusikan dan mendukung Mirantis Container Runtime untuk Windows Server. Meskipun Google dapat terus memublikasikan kelompok gambar ini hingga 30 Oktober 2023, kelompok gambar tersebut kini tidak digunakan lagi, dan semua gambar dalam kelompok gambar tersebut telah ditandai sebagai usang.
Virtual machine berdasarkan image ini yang dibuat sebelum 30 Oktober 2023 akan terus berjalan tanpa gangguan. Namun, pembuatan instance untuk instance baru berdasarkan gambar ini akan gagal setelah tanggal tersebut.
Gambar kustom yang berasal dari gambar ini sebelum 30 Oktober 2023 akan terus berfungsi. Namun, image kustom tidak akan otomatis menerima update Patch Selasa Windows, dan juga tidak akan menerima versi terbaru dari Runtime Container Mirantis.
Jika Anda ingin terus menggunakan image dengan Mirantis Container Runtime yang telah diinstal sebelumnya, Mirantis Inc menawarkan image di Google Cloud Marketplace. Biaya image VM ini mencakup dukungan dan pemberian lisensi untuk Mirantis Container Runtime langsung dari Mirantis. Pelanggan yang tertarik untuk menggunakan Mirantis Container Runtime mandiri juga dapat mendownloadnya langsung dari situs Mirantis.
Jika Anda ingin bermigrasi ke runtime container alternatif seperti Docker CE, ikuti petunjuk di atas.
Container tidak kompatibel dengan seluruh versi Windows
Container yang di-build pada Windows versi sebelumnya tidak berfungsi di instance Compute Engine yang menjalankan versi Windows yang lebih baru. Docker menarik container versi Windows Server 2019 secara default. Artinya, menjalankan perintah berikut di instance yang menjalankan Windows Server versi 1709 atau yang lebih baru akan menghasilkan error:
PS C:\> docker run -it mcr.microsoft.com/windows/nanoserver cmd.exe docker: Error response from daemon: container 9a1eb8bbcba4e91792be65f3c40b5a1aee062f02fbc60a78444b47d043438069 encountered an error during CreateContainer: failure in a Windows system call: The operating system of the container does not match the operating system of the host. (0xc0370101)
Halaman Kompatibilitas versi container Windows milik Microsoft berisi informasi selengkapnya. Untuk mengatasi inkompatibilitas
versi container Windows, tentukan tag yang sesuai dengan versi
Windows Anda saat menarik dan menjalankan container. Misalnya, di Windows Server,
instance versi 20H2, gunakan perintah berikut untuk menjalankan command prompt di
container nanoserver
versi 20H2, bukan container default LTSC (1809) 2019:
PS C:\> docker run -it mcr.microsoft.com/windows/nanoserver:1809 cmd.exe
Inkompatibilitas MTU memengaruhi konektivitas instance dan container
Saat Anda membuat jaringan container pada instance Windows menggunakan perintah docker
network create
atau New-VMSwitch
, MTU antarmuka jaringan
instance biasanya dipaksa untuk
1500
. Antarmuka jaringan default di dalam container Docker baru biasanya juga menggunakan MTU 1500
.
Jika jaringan VPC Anda memiliki MTU 1460
, Anda mungkin
mengalami masalah berikut:
Sesi RDP dapat berhenti dan Anda mungkin tidak dapat menghubungkan kembali. Hal ini umum terjadi saat membuat jaringan container transparan.
Resolusi DNS di dalam container mungkin gagal.
Resolusi DNS berhasil, tetapi pembuatan koneksi HTTP dari container ke internet mungkin akan gagal.
Solusi yang direkomendasikan untuk batasan ini memerlukan dua langkah:
menetapkan MTU untuk antarmuka jaringan instance ke 1460
dan menetapkan MTU untuk antarmuka jaringan container
ke 1460
. Atau, Anda dapat menetapkan MTU untuk VPC ke 1500
, tetapi hal ini mengharuskan Anda menghentikan atau memigrasikan semua VM.
1. Menyetel MTU untuk antarmuka jaringan instance Windows
Jalankan perintah berikut di terminal PowerShell pada instance Windows guna menetapkan MTU untuk semua antarmuka jaringan (Ethernet dan vEthernet):
PS C:\> Get-NetAdapter | Where-Object Name -like "*Ethernet*" | ForEach-Object {
& netsh interface ipv4 set subinterface $_.InterfaceIndex mtu=1460 store=persistent
}
Pastikan MTU Ethernet dan antarmuka vEthernet instance disetel ke
1460
menggunakan perintah ini:
PS C:\> netsh interface ipv4 show subinterfaces MTU MediaSenseState Bytes In Bytes Out Interface ------ --------------- --------- --------- ------------- 4294967295 1 0 0 Loopback Pseudo-Interface 1 1460 1 628295912 2613170 Ethernet 1460 1 37793 223909 vEthernet (nat)
Jika tidak dapat menjalankan perintah ini karena tidak dapat lagi
terhubung ke instance menggunakan RDP, Anda dapat terhubung ke instance melalui
konsol serial, mulai prompt cmd
dan jalankan perintah netsh
di sana untuk
memperbaiki MTU. Agar tidak perlu
melakukannya, sebaiknya jalankan perintah docker network ...
atau New-VMSwitch
sebagai bagian dari skrip yang juga menjalankan perintah perbaikan MTU.
2. Menyetel MTU untuk antarmuka jaringan container Windows
MTU untuk container Windows harus ditetapkan saat container sedang berjalan, baik dari dalam container maupun dari instance yang menghosting container. Jika PowerShell tersedia di container, Anda dapat menjalankan perintah ini secara interaktif atau dari skrip dalam container untuk menetapkan MTU dengan benar:
PS C:\> Get-NetAdapter | Where-Object Name -like "vEthernet*" | ForEach-Object {
& netsh interface ipv4 set subinterface $_.InterfaceIndex mtu=1460 store=persistent
}
Atau, Anda dapat menjalankan perintah ini pada instance Windows untuk menetapkan MTU bagi semua container yang berjalan:
PS C:\> Get-NetIPInterface -IncludeAllCompartments |
Where-Object InterfaceAlias -like "vEthernet*" |
Set-NetIPInterface -IncludeAllCompartments -NlMtuBytes 1460
Container Hyper-V gagal dimulai
Container Hyper-V saat ini tidak didukung di Compute Engine.
Langkah selanjutnya
- Membuat dan memulai instance yang dapat Anda gunakan untuk menjalankan aplikasi container.
- Pelajari instance Compute Engine.
- Pelajari lebih lanjut Google Kubernetes Engine, yang dapat Anda gunakan untuk menjalankan container di Google Cloud tanpa mengelola sendiri instance Compute Engine sendiri.
- Pelajari Kubernetes lebih lanjut.
- Pelajari cara menggunakan Artifact Registry untuk menyimpan image container secara pribadi di dalam Google Cloud.