Kursus Asas Docker dan Kubernetes
Kursus peringkat sederhana berstruktur merangkumi imej Docker, kontena, volum, rangkaian, Compose, serta workload, perkhidmatan, storan dan penyelesaian masalah Kubernetes.
Apa yang akan anda pelajari
- Membina dan mengoptimumkan imej Docker dengan Dockerfile
- Menjalankan dan memeriksa kontena serta menyimpan data secara kekal dengan volum
- Menyambungkan kontena dengan rangkaian Docker dan Compose
- Menyebarkan workload teras Kubernetes dengan ConfigMap dan Secret
- Mendedahkan aplikasi dan menyelesaikan masalah kluster Kubernetes
Sebelum bermula
- Pengalaman asas dengan baris arahan Linux
- Biasa dengan HTTP, port dan penggunaan aplikasi
- Bank latihan Docker dan Kubernetes berguna untuk penilaian kendiri
Pelajaran 1 Imej Docker dan Dockerfile
Imej Docker ialah templat baca sahaja yang mengandungi aplikasi, runtime, pustaka dan konfigurasinya. Imej dibina daripada Dockerfile menggunakan lapisan: setiap arahan seperti FROM, COPY, RUN atau ENV mencipta satu lapisan, dan lapisan yang tidak berubah dicache supaya binaan semula lebih pantas. Imej yang lebih kecil dan selamat mengutamakan imej asas yang minimum, menggabungkan arahan RUN yang berkaitan, dan hanya menyalin fail yang diperlukan aplikasi.
Arahan FROM memilih imej asas. COPY memindahkan fail daripada konteks binaan ke dalam imej, manakala RUN melaksanakan arahan semasa binaan. CMD menyediakan arahan dan argumen lalai yang digunakan apabila kontena dimulakan, dan ENTRYPOINT mentakrifkan atur cara boleh laku yang sentiasa berjalan. Apabila kedua-duanya wujud, entrypoint menerima argumen baris arahan sebagai parameternya. Semakan kesihatan atau pengguna bukan root boleh ditambah dengan HEALTHCHECK dan USER.
Gunakan docker build -t myapp:latest . untuk membina imej dan docker image ls untuk menyenaraikan imej. Tandakan imej dengan nombor versi yang bermakna dan elakkan hanya menggunakan latest dalam pengeluaran. Matlamatnya ialah imej yang deterministik, kecil dan boleh dihasilkan semula hanya daripada Dockerfile.
Tip latihan Imej Docker dan Dockerfile: Ulang kaji pelajaran ini dalam sesi pendek setiap hari. Selepas setiap latihan, sebutkan peraturan atau langkah yang anda gunakan; jika tidak dapat, ulang kaji topik itu sebelum meneruskan. Konsistensi lebih baik daripada sesi panjang.
Contoh
Aplikasi Node.js hanya memerlukan fail pakej untuk memasang kebergantungan dan kod sumbernya untuk dijalankan. Dockerfile bermula dengan FROM node:20-alpine, menyalin package.json dahulu, menjalankan npm ci, menyalin kod sumber, bertukar kepada pengguna bukan root, dan mentakrifkan CMD ["node", "server.js"]. Menyalin kebergantungan sebelum kod sumber membolehkan Docker menggunakan semula lapisan kebergantungan sehingga fail pakej berubah.
Baca semula soalan sebelum selesai dan sahkan maksud jawapan anda.
Pelajaran 2 Kitaran Hidup Kontena dan Storan Kekal
Kontena ialah instance berjalan bagi imej. Docker mencipta, memulakan, menghentikan, memulakan semula dan membuang kontena dengan arahan seperti docker create, docker start, docker stop dan docker rm. Pintasan biasa docker run mencipta dan memulakan kontena dalam satu langkah. Gunakan docker ps untuk kontena yang berjalan, docker ps -a untuk menyertakan kontena yang dihentikan, dan docker logs untuk memeriksa output aplikasi.
Sistem fail kontena bersifat sementara: apabila kontena dibuang, perubahan yang ditulis di dalamnya hilang. Volum dan bind mount menyelesaikan masalah ini. Volum bernama diuruskan oleh Docker dan kekal selepas kontena dibuang; bind mount memetakan direktori hos ke dalam kontena. Bendera -v dan --mount melampirkan storan, dan kontena boleh berkongsi volum yang sama. Mount baca sahaja menghalang pengubahsuaian secara tidak sengaja.
Untuk penyahpepijatan, docker exec -it container bash membuka shell di dalam kontena yang berjalan, dan docker inspect menunjukkan butiran konfigurasi dan keadaan. Lampirkan dasar --restart hanya apabila aplikasi perlu pulih secara automatik, dan simpan log serta data di luar kontena apabila kontena itu sendiri boleh diganti.
Tip latihan Kitaran Hidup Kontena dan Storan Kekal: Ulang kaji pelajaran ini dalam sesi pendek setiap hari. Selepas setiap latihan, sebutkan peraturan atau langkah yang anda gunakan; jika tidak dapat, ulang kaji topik itu sebelum meneruskan. Konsistensi lebih baik daripada sesi panjang.
Contoh
Kontena pangkalan data dimulakan dengan docker run -d --name postgres -v pgdata:/var/lib/postgresql/data -e POSTGRES_PASSWORD=secret postgres:16. Volum bernama pgdata mengekalkan fail pangkalan data selepas docker rm postgres, jadi kontena pengganti yang menggunakan volum yang sama memulihkan data yang sama.
Baca semula soalan sebelum selesai dan sahkan maksud jawapan anda.
Pelajaran 3 Rangkaian Docker dan Compose
Rangkaian Docker membolehkan kontena berkomunikasi mengikut nama atau IP. Rangkaian bridge lalai menyediakan DNS automatik antara kontena pada rangkaian yang sama, manakala rangkaian hos berkongsi timbunan rangkaian hos dan menghilangkan pengasingan. Rangkaian bridge yang ditakrifkan pengguna disyorkan kerana menyokong resolusi DNS dan boleh dilampirkan atau ditanggalkan tanpa mencipta semula kontena. Terbitkan port kontena kepada hos dengan -p 8080:80; sebelah kiri ialah port hos dan sebelah kanan ialah port kontena.
Docker Compose mentakrifkan aplikasi pelbagai kontena dalam fail YAML. Perkhidmatan mengisytiharkan imej, konteks binaan, port, volum, pemboleh ubah persekitaran dan rangkaian. Menjalankan docker compose up -d mencipta rangkaian dan memulakan perkhidmatan bersama-sama; docker compose down membuang kontena dan rangkaian lalai sambil mengekalkan volum bernama. Compose juga menyokong kebergantungan, semakan kesihatan dan penskalaan replika perkhidmatan.
Sahkan sambungan dengan docker network ls, docker network inspect dan docker exec. Kegagalan biasa ialah kontena web tidak dapat mencapai pangkalan data kerana berada pada rangkaian berbeza atau kerana aplikasi menggunakan localhost dan bukannya nama perkhidmatan. Gunakan nama perkhidmatan dalam Compose supaya DNS terbina menyelesaikan kepada kontena yang betul.
Tip latihan Rangkaian Docker dan Compose: Ulang kaji pelajaran ini dalam sesi pendek setiap hari. Selepas setiap latihan, sebutkan peraturan atau langkah yang anda gunakan; jika tidak dapat, ulang kaji topik itu sebelum meneruskan. Konsistensi lebih baik daripada sesi panjang.
Contoh
Fail compose mentakrifkan perkhidmatan web dan db. Perkhidmatan web memetakan "8080:3000" dan bersambung ke pangkalan data menggunakan nama hos db dan port 5432. Perkhidmatan pangkalan data memasang volum bernama dan menetapkan semakan kesihatan permulaan. Menjalankan docker compose up -d memulakan kedua-dua perkhidmatan pada satu rangkaian persendirian, dan pelayar mencapai aplikasi di http://localhost:8080.
Baca semula soalan sebelum selesai dan sahkan maksud jawapan anda.
Pelajaran 4 Workload Teras Kubernetes
Kubernetes menjalankan aplikasi berkontena pada kluster nod. Unit kebolehgunaan terkecil ialah Pod, yang membalut satu atau lebih kontena dengan storan, rangkaian dan kitaran hayat yang dikongsi. Pod biasanya dicipta oleh pengawal. Deployment mengurus replika tanpa keadaan dengan kemas kini bergulir dan rollback; StatefulSet memberikan identiti rangkaian yang stabil dan penskalaan berurutan untuk aplikasi berkeadaan; DaemonSet menjalankan tepat satu Pod pada setiap nod terpilih; Job menjalankan workload sehingga selesai; dan CronJob menjalankan Job mengikut jadual.
Konfigurasi diasingkan daripada kod dengan ConfigMap dan Secret. ConfigMap menyimpan data tidak sensitif seperti pemboleh ubah persekitaran atau fail konfigurasi, manakala Secret menyimpan nilai sensitif seperti kata laluan dan token API. Kedua-duanya boleh dipasang sebagai volum atau disuntik sebagai pemboleh ubah persekitaran. Secret dikodkan base64 dalam API tetapi tetap perlu dilindungi dengan RBAC dan penyulitan semasa disimpan.
Pengawal menyelaraskan keadaan yang dikehendaki: anda mengisytiharkan bilangan replika yang dikehendaki, dan Kubernetes mencipta atau membuang Pod sehingga realiti sepadan. Label dan pemilih menyambungkan pengawal kepada Pod, jadi gunakan label yang bermakna seperti app dan tier. Gunakan manifest dengan kubectl apply -f dan periksa status workload dengan kubectl get pods, kubectl describe deployment dan kubectl rollout status.
Tip latihan Workload Teras Kubernetes: Ulang kaji pelajaran ini dalam sesi pendek setiap hari. Selepas setiap latihan, sebutkan peraturan atau langkah yang anda gunakan; jika tidak dapat, ulang kaji topik itu sebelum meneruskan. Konsistensi lebih baik daripada sesi panjang.
Contoh
Manifest Deployment mengisytiharkan tiga replika kontena nginx dengan label app: web. ConfigMap membekalkan nilai APP_MODE, dan Secret membekalkan DB_PASSWORD. Jika nod gagal, pengawal mencipta Pod gantian pada nod yang sihat, mengekalkan bilangan yang dikehendaki pada tiga.
Baca semula soalan sebelum selesai dan sahkan maksud jawapan anda.
Pelajaran 5 Perkhidmatan, Storan dan Penyelesaian Masalah Kubernetes
Perkhidmatan menyediakan titik akhir rangkaian yang stabil untuk sekumpulan Pod. ClusterIP mendedahkan Perkhidmatan di dalam kluster, NodePort membuka port pada setiap nod, dan LoadBalancer bersepadu dengan pembekal awan untuk trafik luaran. Ingress menghalakan trafik HTTP dan HTTPS kepada Perkhidmatan menggunakan nama hos dan laluan, biasanya melalui pengawal ingress. Pemilih dalam Perkhidmatan mesti sepadan dengan label Pod, dan targetPort Perkhidmatan mesti sepadan dengan port kontena.
Storan kekal menggunakan PersistentVolumeClaim (PVC) untuk meminta storan, PersistentVolume (PV) untuk menyediakannya, dan StorageClass untuk menentukan gelagat peruntukan. PVC yang terikat pada PV boleh dipasang ke dalam Pod; ReclaimPolicy mengawal sama ada volum dikekalkan atau dipadam apabila PVC dilepaskan. Workload berkeadaan seperti pangkalan data harus menggunakan storan yang stabil dan memahami cara tuntutan volum memetakan kepada Pod.
Penyelesaian masalah mengikut susunan berstruktur: kubectl get pods untuk melihat status, kubectl describe pod untuk peristiwa dan keadaan, kubectl logs untuk output aplikasi, dan kubectl exec untuk pemeriksaan interaktif. Periksa ralat tarikan imej, punca CrashLoopBackOff, probe kesediaan, pemilih Perkhidmatan dan dasar rangkaian. Aliran kerja semakan iaitu membina imej, menguji secara tempatan, menggunakan perubahan kecil dan rollback dengan cepat menjadikan amalan Kubernetes kemahiran yang boleh diulang.
Tip latihan Perkhidmatan, Storan dan Penyelesaian Masalah Kubernetes: Ulang kaji pelajaran ini dalam sesi pendek setiap hari. Selepas setiap latihan, sebutkan peraturan atau langkah yang anda gunakan; jika tidak dapat, ulang kaji topik itu sebelum meneruskan. Konsistensi lebih baik daripada sesi panjang.
Contoh
Pod kekal dalam CrashLoopBackOff selepas tag imej baharu digunakan. kubectl describe pod menunjukkan kod keluar kontena, kubectl logs mendedahkan pemboleh ubah persekitaran yang hilang, dan Deployment merujuk ConfigMap yang tidak wujud. Selepas mencipta ConfigMap dan menggunakan semula, Pod mencapai Running dan Perkhidmatan mula mengembalikan trafik.
Baca semula soalan sebelum selesai dan sahkan maksud jawapan anda.