Docker - Membina Fail: Panduan Pemula

Hai daar, para master Docker masa depan! Saya begitu gembira untuk menjadi pandu anda dalam perjalanan yang menarik ke dunia Docker dan membina fail. Sebagai seseorang yang telah mengajar sains komputer selama tahun, saya telah melihat banyak murid terangsang ketika mereka memahami konsep ini. Jadi, mari kita lipatkan lengan dan masuk ke dalam!

Docker - Building Files

Menafikahkan Docker Build

Sebelum kita melompat ke hal-hal kecil, mari kita mulakan dengan asas. Bayangkan anda membina rumah. Anda perlu rancangan, kan? Dalam dunia Docker, rancangan itu dipanggil Dockerfile. Dan seperti bagaimana anda menggunakan rancangan itu untuk membina rumah anda, kita menggunakan perintah docker build untuk membuat imej Docker daripada Dockerfile kita.

Apa itu docker build?

docker build adalah perintah yang membaca arahan daripada Dockerfile dan menggunainya untuk membuat imej Docker. Bayangkan ia seperti kontraktor robot peribadi anda yang mengikuti rancangan (Dockerfile) anda setia, membuat replika sempurna persekitaran yang anda nyatakan.

Membuat Dockerfile Pertama Anda

Mari kita mula dengan membuat Dockerfile mudah. Buka editor teks kegemaran anda dan buat fail baru dinamakan Dockerfile (tanpa sambungan).

FROM ubuntu:latest
RUN apt-get update && apt-get install -y nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Sekarang, mari kita pecahkan ini:

  1. FROM ubuntu:latest: Ini seperti katakan, "Mulakan dengan sistem operasi Ubuntu terbaru sebagai asas."
  2. RUN apt-get update && apt-get install -y nginx: Baris ini mengemaskini senarai pakej dan memasang Nginx.
  3. EXPOSE 80: Ini memberitahu Docker bahawa container kita akan mendengarkan port 80.
  4. CMD ["nginx", "-g", "daemon off;"]: Ini perintah yang akan dijalankan ketika container kita bermula.

Membina Imej Docker Anda

Sekarang kami mempunyai Dockerfile, mari kita membina imej kita! Buka terminal, navigasi ke direktori yang mengandungi Dockerfile anda, dan jalankan:

docker build -t my-nginx-image .

Flag -t mengecat imej kita dengan nama, dan titik . di akhir memberitahu Docker untuk mencari Dockerfile di direktori sekarang.

Jika semua berjalan lancar, anda akan melihat barisan langkah yang dijalankan, dan akhirnya, mesej yang mengatakan imej anda telah dibina dengan jaya.

Teknik Dockerfile Lanjut

Sekarang anda telah mendapat asas, mari kita jelajahi beberapa teknik lanjut.

Membina Bergabung

Membina bergabung adalah seperti memiliki beberapa rancangan untuk bahagian-bahagian rumah anda. Ia membolehkan anda gunakan beberapa pernyataan FROM dalam Dockerfile anda. Ini terutamanya berguna untuk membuat imej yang lebih kecil dan lebih efektif.

Ini adalah contoh:

# tahap 1: Bangun aplikasi
FROM golang:1.16 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp

# tahap 2: Buat imej akhir
FROM alpine:latest
WORKDIR /root/
COPY --from=builder /app/myapp .
CMD ["./myapp"]

Dalam contoh ini, kita lebih dulu membina aplikasi Go dalam persekitaran Go, kemudian salin binary yang dibina ke imej Alpine Linux yang lebih kecil.

Menggunakan ARG dan ENV

ARG dan ENV adalah seperti variabel dalam rancangan anda. ARG digunakan semasa proses binaan, sementara ENV menetapkan variabel persekitaran dalam imej akhir.

FROM ubuntu:latest
ARG DEBIAN_FRONTEND=noninteractive
ENV APP_HOME /app
RUN mkdir $APP_HOME
WORKDIR $APP_HOME

Pemeriksaan Kesihatan

Pemeriksaan kesihatan adalah seperti memiliki doktor yang secara tetap memeriksa rumah anda untuk pastikan segalanya baik.

FROM nginx:latest
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost/ || exit 1

Dockerfile ini termasuk pemeriksaan kesihatan yang mengcurl localhost setiap 30 saat untuk memastikan Nginx menjawab.

Amalan Terbaik untuk Dockerfile

Sekarang, mari bicarakan tentang beberapa amalan terbaik. Ini adalah seperti rules emas pembinaan rumah, tetapi untuk Dockerfiles:

  1. Gunakan imej asas rasmi jika mungkin
  2. Minimalkan bilangan lapisan
  3. Jangan pasang pakej yang tidak diperlukan
  4. Gunakan fail .dockerignore
  5. Susun argumen multi-baris
  6. Manfaatkan cache binaan

Ini adalah jadual yang menggabungkan amalan ini:

Amalan Keterangan
Gunakan imej asas rasmi Menjamin keselamatan dan kebolehpercayaan
Minimalkan lapisan Mengurangkan saiz imej dan masa binaan
Hindari pakej yang tidak diperlukan Menyimpan imej ringan dan keselamatan
Gunakan .dockerignore Mengelakkan fail yang tidak diperlukan daripada konteks binaan
Susun argumen multi-baris Meningkatkan kebacaan dan memudahkan kemas kini
Manfaatkan cache binaan Mempercepatkan binaan berikutnya

Kesimpulan

Dan begitulah, rakan-rakan! Kita telah menjalani perjalanan dari asas docker build ke beberapa teknik lanjut dan amalan terbaik. Ingat, menjadi mahir dengan Dockerfiles adalah seperti belajar membina rumah yang sempurna - ia memerlukan latihan, tetapi hasilnya berharga.

Sementara kita mengakhiri, saya diingatkan oleh murid yang pernah katakan kepada saya, "Docker kelihatan seperti sihir pada awalnya, tetapi sekarang saya merasa seperti ahli sihir." Itulah kekuatan memahami konsep ini - ia menukar yang kelihatan seperti sihir menjadi alat yang anda boleh pakai dengan kepercayaan.

Terus cuba, terus bangun, dan terutama, terus menikmati proses. Docker adalah alat yang kuat yang boleh membuat kehidupan pengembangan anda lebih mudah sekali anda menguasaiannya. Dan siapa tahu? Mungkin suatu hari anda akan menjadi yang mengajarkan orang lain tentang keajaiban Docker!

Selamat Dockering, semua orang!

Credits: Image by storyset