Checkpoint
Publish your container image to Container Registry
/ 100
Pengantar Docker
GSP055
Ringkasan
Docker adalah platform terbuka untuk mengembangkan, mengirim, dan menjalankan aplikasi. Dengan Docker, Anda dapat memisahkan aplikasi dari infrastruktur dan memperlakukan infrastruktur layaknya aplikasi terkelola. Docker membantu mengirim kode, menguji, dan men-deploy lebih cepat, serta mempersingkat siklus antara menulis dan menjalankan kode.
Docker melakukan proses tersebut dengan menggabungkan fitur containerization kernel dengan alur kerja serta peralatan yang membantu Anda mengelola dan men-deploy aplikasi.
Container Docker dapat langsung digunakan di Kubernetes, sehingga memudahkan container dijalankan di Kubernetes Engine. Setelah mempelajari hal-hal penting mengenai Docker, Anda akan memiliki keterampilan untuk mulai mengembangkan Kubernetes serta aplikasi dalam container.
Tujuan
Di lab ini, Anda akan mempelajari cara:
- Membangun, menjalankan, dan men-debug container Docker.
- Mengambil image Docker dari Docker Hub dan Google Artifact Registry.
- Mengirim image Docker ke Google Artifact Registry.
Prasyarat
Ini adalah lab tingkat pendahuluan. Anda dianggap tidak memiliki atau hanya memiliki sedikit pengalaman terkait Docker dan container. Pemahaman dalam menggunakan Cloud Shell dan command line direkomendasikan, tetapi tidak wajib.
Penyiapan dan persyaratan
Sebelum mengklik tombol Mulai Lab
Baca petunjuk ini. Lab memiliki timer dan Anda tidak dapat menjedanya. Timer, yang dimulai saat Anda mengklik Start Lab, akan menampilkan durasi ketersediaan resource Google Cloud untuk Anda.
Lab praktik ini dapat Anda gunakan untuk melakukan sendiri aktivitas lab di lingkungan cloud sungguhan, bukan di lingkungan demo atau simulasi. Untuk mengakses lab ini, Anda akan diberi kredensial baru yang bersifat sementara dan dapat digunakan untuk login serta mengakses Google Cloud selama durasi lab.
Untuk menyelesaikan lab ini, Anda memerlukan:
- Akses ke browser internet standar (disarankan browser Chrome).
- Waktu untuk menyelesaikan lab. Ingat, setelah dimulai, lab tidak dapat dijeda.
Cara memulai lab dan login ke Google Cloud Console
-
Klik tombol Start Lab. Jika Anda perlu membayar lab, jendela pop-up akan terbuka untuk memilih metode pembayaran. Di sebelah kiri adalah panel Lab Details dengan info berikut:
- Tombol Open Google Cloud console
- Waktu tersisa
- Kredensial sementara yang harus Anda gunakan untuk lab ini
- Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
-
Klik Open Google Cloud console (atau klik kanan dan pilih Open Link in Incognito Window jika Anda menjalankan browser Chrome).
Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Sign in.
Tips: Atur tab di jendela terpisah secara berdampingan.
Catatan: Jika Anda melihat dialog Choose an account, klik Use Another Account. -
Jika perlu, salin Username di bawah dan tempel ke dialog Sign in.
{{{user_0.username | "Username"}}} Anda juga dapat menemukan Username di panel Lab Details.
-
Klik Next.
-
Salin Password di bawah dan tempel ke dialog Welcome.
{{{user_0.password | "Password"}}} Anda juga dapat menemukan Password di panel Lab Details.
-
Klik Next.
Penting: Anda harus menggunakan kredensial yang diberikan lab. Jangan menggunakan kredensial akun Google Cloud Anda. Catatan: Menggunakan akun Google Cloud sendiri untuk lab ini dapat dikenai biaya tambahan. -
Klik halaman berikutnya:
- Setujui persyaratan dan ketentuan.
- Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
- Jangan mendaftar uji coba gratis.
Setelah beberapa saat, Konsol Google Cloud akan terbuka di tab ini.
Mengaktifkan Cloud Shell
Cloud Shell adalah mesin virtual yang dilengkapi dengan berbagai alat pengembangan. Mesin virtual ini menawarkan direktori beranda persisten berkapasitas 5 GB dan berjalan di Google Cloud. Cloud Shell menyediakan akses command-line untuk resource Google Cloud Anda.
- Klik Activate Cloud Shell di bagian atas konsol Google Cloud.
Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke PROJECT_ID Anda. Output berisi baris yang mendeklarasikan PROJECT_ID untuk sesi ini:
gcloud
adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.
- (Opsional) Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
-
Klik Authorize.
-
Output Anda sekarang akan terlihat seperti ini:
Output:
- (Opsional) Anda dapat menampilkan daftar project ID dengan perintah ini:
Output:
Contoh output:
gcloud
yang lengkap di Google Cloud, baca panduan ringkasan gcloud CLI.
Tugas 1. Hello world
- Di Cloud Shell, masukkan perintah berikut guna menjalankan container hello world untuk memulai:
(Output Perintah)
Container sederhana ini menampilkan Hello from Docker!
pada layar Anda. Meskipun perintah tampak sederhana, perhatikan jumlah langkah yang dijalankan di output. Daemon Docker menelusuri image hello-world, tidak menemukan image secara lokal, mengambil image dari registry publik bernama Docker Hub, membuat container dari image tersebut, lalu menjalankan container tersebut untuk Anda.
- Jalankan perintah berikut untuk melihat image container yang diambil dari Docker Hub:
(Output Perintah)
Ini adalah image yang diambil dari registry publik Docker Hub. ID Image memiliki format hash SHA256—kolom ini menentukan image Docker yang disediakan. Jika tidak menemukan image secara lokal, daemon Docker akan secara default menelusuri image di registry publik.
- Jalankan lagi container:
(Output Perintah)
Perhatikan bahwa saat Anda menjalankan perintah ini untuk kedua kalinya, daemon Docker mencari image di registry lokal dan menjalankan container dari image tersebut. Daemon Docker tidak perlu mengambil image dari Docker Hub.
- Terakhir, lihat container yang sedang berjalan dengan menjalankan perintah berikut:
(Output Perintah)
Tidak ada container yang berjalan. Anda sudah keluar dari container hello-world yang Anda jalankan sebelumnya.
- Untuk melihat semua container, termasuk container yang telah selesai dieksekusi, jalankan
docker ps -a
:
(Output Perintah)
Ini menunjukkan kepada Anda Container ID
, UUID yang dibuat oleh Docker untuk mengidentifikasi container, dan metadata lainnya tentang proses yang dijalankan. Names
container juga dibuat secara acak, tetapi dapat ditentukan dengan docker run --name [container-name] hello-world
.
Tugas 2. Membangun
Di bagian ini, Anda akan membangun image Docker yang didasarkan pada aplikasi node sederhana.
- Jalankan perintah berikut untuk membuat dan beralih ke folder bernama
test
.
- Buat
Dockerfile
:
File ini menginstruksikan daemon Docker cara membangun image.
- Baris awal menentukan image induk dasar, yang dalam kasus ini adalah image Docker resmi untuk dukungan jangka panjang (LTS) versi node.
- Di baris kedua, tetapkan direktori container saat ini.
- Di baris ketiga, tambahkan konten direktori saat ini (ditunjukkan dengan
"."
) ke dalam container. - Kemudian, ekspos port container agar dapat menerima koneksi pada port tersebut dan akhirnya menjalankan perintah node untuk memulai aplikasi.
Dockerfile
. Sekarang, Anda akan menulis aplikasi node, dan setelah itu Anda akan membangun image.
- Jalankan perintah berikut untuk membuat aplikasi node:
Ini adalah server HTTP sederhana yang memproses port 80 dan menampilkan "Hello World".
Sekarang, bangun image-nya.
- Perhatikan kembali
"."
yang berarti direktori saat ini, sehingga Anda perlu menjalankan perintah ini dari dalam direktori yang memiliki Dockerfile:
Perlu waktu beberapa menit untuk menyelesaikan eksekusi perintah ini. Setelah selesai, output Anda akan terlihat seperti berikut:
Flag -t
dimaksudkan untuk memberi nama dan tag image dengan sintaksis name:tag
. Nama image-nya adalah node-app
dan tag-nya
adalah 0.1
. Tag ini sangat direkomendasikan saat membangun image Docker. Jika Anda tidak menetapkannya, tag akan ditetapkan secara default ke latest
, sehingga membedakan image yang baru dengan yang lama menjadi lebih sulit. Selain itu, perhatikan bahwa setiap baris di Dockerfile
di atas menghasilkan lapisan container menengah saat image dibangun.
- Sekarang, jalankan perintah berikut untuk melihat image yang telah Anda bangun:
Output Anda akan terlihat seperti berikut:
Perhatikan bahwa node
adalah image dasar dan node-app
adalah image yang Anda bangun. Anda tidak dapat menghapus node
tanpa menghapus node-app
terlebih dahulu. Ukuran image relatif kecil dibandingkan VM. Image node versi lain, seperti node:slim
dan node:alpine
, dapat memberikan image yang berukuran lebih kecil lagi guna memudahkan portabilitas. Topik tentang cara mengurangi ukuran container dijelaskan lebih lanjut di Topik Lanjutan. Anda dapat melihat semua versi di repositori resmi dalam node.
Tugas 3. Menjalankan
- Gunakan kode ini untuk menjalankan container berdasarkan image yang telah Anda bangun:
(Output Perintah)
Flag --name
memungkinkan Anda memberi nama container jika dikehendaki. Flag -p
memerintahkan Docker untuk memetakan port 4000 host ke port 80 container. Sekarang, Anda dapat menjangkau server di http://localhost:4000
. Tanpa pemetaan port, Anda tidak dapat menjangkau container di localhost.
- Buka terminal lain (di Cloud Shell, klik ikon
+
), lalu uji server:
(Output Perintah)
Container akan berjalan selama terminal awal juga berjalan. Jika ingin container dijalankan di latar belakang (tidak terikat dengan sesi terminal), Anda harus menetapkan flag -d
.
- Tutup terminal awal, lalu jalankan perintah berikut untuk menghentikan dan menghapus container:
- Sekarang, jalankan perintah berikut untuk memulai container di latar belakang:
(Output Perintah)
- Perhatikan bahwa container sedang berjalan dalam output
docker ps
. Anda dapat melihat log dengan mengeksekusidocker logs [container_id]
.
docker logs 17b
jika ID container berupa 17bcaca6f....
(Output Perintah)
Sekarang, modifikasi aplikasinya.
- Di Cloud Shell, buka direktori pengujian yang sebelumnya telah Anda buat di lab:
- Edit
app.js
dengan editor teks pilihan Anda (misalnya nano atau vim) dan ganti "Hello World" dengan string lain:
- Bangun image baru ini dan beri tag
0.2
:
(Output Perintah)
Perhatikan bahwa pada Langkah 2 Anda menggunakan lapisan cache yang ada. Dari Langkah 3 dan seterusnya, lapisan tersebut dimodifikasi karena Anda membuat perubahan pada app.js
.
- Jalankan container lain dengan versi image baru. Perhatikan bahwa kita memetakan port 8080 host, bukan 80. Anda tidak bisa menggunakan port host 4000 karena port tersebut telah digunakan.
(Output Perintah)
- Uji container:
(Output Perintah)
- Sekarang, uji container pertama yang Anda buat:
(Output Perintah)
Tugas 4. Men-debug
Setelah Anda mempelajari cara membangun dan menjalankan container, sekarang pelajari proses debug.
- Anda dapat melihat log container menggunakan
docker logs [container_id]
. Jika Anda ingin memantau output log saat container dijalankan, gunakan opsi-f
.
(Output Perintah)
Terkadang, Anda mungkin ingin memulai sesi Bash interaktif di dalam container yang sedang berjalan.
- Anda dapat menggunakan
docker exec
untuk melakukannya. Buka terminal lain (di Cloud Shell, klik ikon +), lalu masukkan perintah berikut:
Flag -it
memungkinkan Anda berinteraksi dengan container dengan mengalokasikan pseudo-tty dan tetap membuka stdin. Perhatikan bash yang berjalan di direktori WORKDIR
(/app) yang ditetapkan di Dockerfile
. Dari sini, Anda memiliki sesi shell interaktif dalam container untuk melakukan debug.
(Output Perintah)
- Lihat direktori
(Output Perintah)
- Keluar dari sesi Bash:
- Anda dapat memeriksa metadata container di Docker menggunakan Docker inspect:
(Output Perintah)
- Gunakan
--format
untuk memeriksa kolom tertentu dari JSON yang ditampilkan. Contoh:
(Contoh Output)
Pastikan untuk memeriksa referensi dokumentasi Docker berikut guna mengetahui informasi selengkapnya tentang proses debug:
Tugas 5. Memublikasikan
Sekarang, Anda akan mengirim image ke Google Artifact Registry. Setelah itu, Anda akan menghapus semua container dan image guna melakukan simulasi lingkungan baru, lalu mengambil dan menjalankan container. Ini akan menunjukkan portabilitas container Docker.
Untuk mengirim image ke registry pribadi Anda yang dihosting oleh Artifact Registry, Anda perlu memberi tag pada image dengan nama registry. Formatnya adalah <regional-repository>-docker.pkg.dev/my-project/my-repo/my-image
.
Membuat repositori Docker target (Menggunakan Cloud Console)
Anda harus membuat repositori sebelum dapat mengirim image apa pun ke dalamnya. Mengirim image tidak dapat memicu pembuatan repositori dan akun layanan Cloud Build tidak memiliki izin untuk membuat repositori.
-
Dari Navigation Menu, lihat bagian CI/CD, lalu pilih Artifact Registry > Repositories.
-
Klik ikon +CREATE REPOSITORY di samping repositori.
-
Tetapkan
my-repository
sebagai nama repositori. -
Pilih Docker sebagai formatnya.
-
Pada Location Type, pilih Region lalu pilih lokasi :
. -
Klik Create.
Mengonfigurasi autentikasi
Sebelum Anda dapat mengirim atau mengambil image, konfigurasikan Docker agar menggunakan Google Cloud CLI untuk mengautentikasi permintaan ke Artifact Registry.
- Untuk menyiapkan autentikasi ke repositori Docker di region
, jalankan perintah berikut di Cloud Shell:
- Masukkan
Y
saat diminta.
Perintah ini memperbarui konfigurasi Docker Anda. Sekarang Anda dapat terhubung dengan Artifact Registry di project Google Cloud untuk mengirim dan mengambil image.
Membuat repositori Artifact Registry (Menggunakan CLI)
- Jalankan perintah berikut untuk membuat Artifact Repository.
Mengirim container ke Artifact Registry
- Ubah ke direktori dengan Dockerfile Anda.
- Jalankan perintah untuk memberi tag
node-app:0.2
.
- Jalankan perintah berikut untuk memeriksa image Docker yang Anda bangun.
(Output Perintah)
- Kirim image ini ke Artifact Registry.
Output perintah (milik Anda dapat berbeda):
-
Setelah pengiriman selesai, dari Navigation Menu, di bagian CI/CD, klik Artifact Registry > Repositories.
-
Klik my-repository. Anda akan melihat container Docker
node-app
telah dibuat:
Menguji image
Anda dapat memulai VM baru, menjalankan ssh ke VM tersebut, dan menginstal gcloud. Agar mudah, hapus saja semua container dan image guna melakukan simulasi lingkungan baru.
- Hentikan dan hapus semua container:
Anda harus menghapus semua image turunan (dari node:Its
) sebelum menghapus image node tersebut.
- Jalankan perintah berikut untuk menghapus semua image Docker.
(Output Perintah)
Pada tahap ini, Anda memiliki lingkungan yang pseudo-baru.
- Ambil image dan jalankan.
- Jalankan curl terhadap container yang sedang berjalan.
(Output Perintah)
Menguji tugas yang sudah selesai
Klik Check my progress untuk memverifikasi tugas yang telah diselesaikan. Jika Anda berhasil memublikasikan image container ke Artifact Registry, Anda akan melihat skor penilaian.
Di sinilah portabilitas container ditunjukkan. Selama masih terinstal di host (baik lokal maupun VM), Docker dapat mengambil image dari registry publik atau pribadi dan menjalankan container berdasarkan image tersebut. Tidak ada dependensi aplikasi yang harus diinstal di host, kecuali Docker.
Selamat!
Selamat! Dalam lab ini, Anda telah melakukan berbagai aktivitas praktis, termasuk menjalankan container berdasarkan image publik dari Docker Hub. Anda juga telah membuat image container Anda sendiri dan berhasil mengirimnya ke Google Artifact Registry. Selain itu, lab ini juga membekali Anda dengan keterampilan untuk secara efektif men-debug container yang sedang berjalan. Selanjutnya, Anda memperoleh pengalaman dalam menjalankan container berdasarkan image yang telah diambil dari Google Artifact Registry, sehingga meningkatkan pemahaman dan kemahiran Anda dalam Docker.
Langkah berikutnya/Pelajari lebih lanjut
- Referensi Dockerfile
- Docker Hub
- Pelajari Docker lebih lanjut di dokumentasi resmi
- Dokumentasi Artifact Registry
Sertifikasi dan pelatihan Google Cloud
...membantu Anda mengoptimalkan teknologi Google Cloud. Kelas kami mencakup keterampilan teknis dan praktik terbaik untuk membantu Anda memahami dengan cepat dan melanjutkan proses pembelajaran. Kami menawarkan pelatihan tingkat dasar hingga lanjutan dengan opsi on demand, live, dan virtual untuk menyesuaikan dengan jadwal Anda yang sibuk. Sertifikasi membantu Anda memvalidasi dan membuktikan keterampilan serta keahlian Anda dalam teknologi Google Cloud.
Manual Terakhir Diperbarui pada 29 Februari 2024
Lab Terakhir Diuji pada 29 Februari 2024
Hak cipta 2024 Google LLC Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.