Docker - Petunjuk Perintah
Hai sana, para ahli Docker masa depan! Saya sangat senang menjadi panduan Anda dalam perjalanan menarik ini melalui dunia perintah Docker. Sebagai seseorang yang telah mengajar ilmu komputer selama tahun, saya dapat mengatakan bahwa Docker seperti tongkat sihir bagi para pengembang. Itu membuat kehidupan kita menjadi lebih mudah! Jadi, mari kita lengan kanan dan masuk ke dalam realm menarik perintah Docker.
Petunjuk CMD
Petunjuk CMD mirip seperti karakter utama dalam sebuah film - itu adalah bintang pertunjukan saat ini dalam kontainer Docker. Itu memberitahu Docker perintah mana yang harus dijalankan saat kontainer Anda mulai.
Sintaks Dasar
CMD ["executable", "param1", "param2"]
Mari kitauraikan ini dengan contoh sederhana:
FROM ubuntu
CMD ["echo", "Hello, Docker World!"]
Dalam kasus ini, saat Anda menjalankan kontainer Anda, itu akan mencetak "Hello, Docker World!" ke konsol. Itu seperti kontainer Anda menunggangi hallo segera setelah bangun!
Banyak Petunjuk CMD
Ini adalah pertanyaan kecil: Apa yang terjadi jika Anda memiliki banyak petunjuk CMD dalam Dockerfile Anda?
FROM ubuntu
CMD ["echo", "First command"]
CMD ["echo", "Second command"]
Jika Anda menduga bahwa kedua perintah akan dijalankan, saya khawatir Anda jatuh ke dalam sebuah muslihat umum! Sebenarnya, hanya petunjuk CMD terakhir yang akan dieksekusi. Itu seperti dalam sebuah drama - hanya akhir yang penting!
Bentuk Shell vs. Bentuk Exec
CMD dapat ditulis dalam dua bentuk:
- Bentuk Shell:
CMD command param1 param2
- Bentuk Exec:
CMD ["executable", "param1", "param2"]
Bentuk exec lebih disukai karena lebih eksplisit dan menghindari masalah dengan parsing shell.
ENTRYPOINT
Jika CMD adalah karakter utama, ENTRYPOINT adalah sutradara dari film Docker kita. Itu menentukan perintah utama untuk kontainer, yang tidak dapat diganti saat kontainer mulai.
Sintaks Dasar
ENTRYPOINT ["executable", "param1", "param2"]
Mari kita lihat contoh:
FROM ubuntu
ENTRYPOINT ["echo", "Hello from"]
CMD ["Docker"]
Saat Anda menjalankan kontainer ini, itu akan mengeluarkan "Hello from Docker". Tetapi mari kita lihat bagaimana itu menjadi menarik! Jika Anda menjalankan kontainer dengan argumen tambahan, mereka akan mengganti CMD tetapi tidak ENTRYPOINT.
docker run myimage World
Ini akan mengeluarkan "Hello from World". Itu seperti ENTRYPOINT menyiapkan panggung, dan CMD (atau argumen runtime) adalah aktor yang tampil di atasnya!
ENV
ENV adalah seperti departemen busana dalam produksi Docker kita. Itu menentukan variabel lingkungan yang dapat digunakan di seluruh kontainer.
Sintaks Dasar
ENV key=value
Mari kita lihat contoh praktis:
FROM ubuntu
ENV MY_NAME="Docker Enthusiast"
CMD ["sh", "-c", "echo Hello, $MY_NAME!"]
Ini akan mengeluarkan "Hello, Docker Enthusiast!" saat kontainer berjalan. Itu seperti memberikan kontainer Anda sebuah tag nama!
Banyak Petunjuk ENV
Tak seperti CMD, Anda dapat memiliki banyak petunjuk ENV, dan mereka semua akan berpengaruh:
FROM ubuntu
ENV MY_NAME="Docker Enthusiast"
ENV MY_DOG=Rex MY_CAT=Fluffy
CMD ["sh", "-c", "echo Hello, $MY_NAME! Your pets are $MY_DOG and $MY_CAT."]
Kontainer ini akan menyapa Anda dan memperkenalkan hewan peliharaan Anda!
WORKDIR
WORKDIR adalah seperti desainer set untuk produksi Docker kita. Itu menentukan direktori kerja untuk semua perintah yang mengikuti itu dalam Dockerfile.
Sintaks Dasar
WORKDIR /path/to/directory
Mari kita lihat dalam aksi:
FROM ubuntu
WORKDIR /app
COPY . .
CMD ["ls", "-l"]
Dockerfile ini menentukan direktori kerja ke /app
, menyalin isi direktori saat ini ke dalamnya, dan kemudian mencatat isi saat kontainer berjalan. Itu seperti memberitahu kontainer Anda, "Hey, buat dirimu betah di direktori ini!"
Banyak Petunjuk WORKDIR
Anda dapat menggunakan WORKDIR beberapa kali untuk mengubah direktori:
FROM ubuntu
WORKDIR /app
WORKDIR src
WORKDIR scripts
RUN pwd
Ini akan mengeluarkan /app/src/scripts
. Itu seperti memberikan kontainer Anda sebuah tur rumah baru!
Menggabungkan Semua
Sekarang kita telah bertemu dengan semua petunjuk perintah Docker kita, mari kita lihat bagaimana mereka bekerja bersama dalam sebuah konteks dunia nyata. Bayangkan kita membuat aplikasi web Python sederhana:
FROM python:3.9-slim
# Set variabel lingkungan
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# Set direktori kerja
WORKDIR /app
# Instal dependensi
COPY requirements.txt .
RUN pip install -r requirements.txt
# Salin proyek
COPY . .
# Perintah untuk menjalankan aplikasi
ENTRYPOINT ["python"]
CMD ["app.py"]
Dockerfile ini menyiapkan lingkungan Python, menginstal dependensi, menyalin kode aplikasi kita, dan menentukan bagaimana menjalankan aplikasi. Itu seperti resep untuk menciptakan lingkungan yang sempurna bagi aplikasi Python kita!
Ringkasan Perintah
Berikut adalah tabel referensi cepat dari perintah yang kita bahas:
Perintah | Deskripsi | Contoh |
---|---|---|
CMD | Menentukan perintah untuk menjalankan saat kontainer mulai | CMD ["python", "app.py"] |
ENTRYPOINT | Menentukan perintah utama kontainer | ENTRYPOINT ["python"] |
ENV | Menentukan variabel lingkungan | ENV MY_VAR=value |
WORKDIR | Menentukan direktori kerja | WORKDIR /app |
Ingat, perintah ini adalah seperti blok bangunan dari kontainer Docker Anda. Campur dan cocok mereka untuk menciptakan lingkungan yang sempurna bagi aplikasi Anda!
Dan itu adalah, teman-teman saya! Kita telah melintasi negeri perintah Docker, dari bintang CMD ke sutradara ENTRYPOINT, departemen busana ENV, dan desainer set WORKDIR. Saya harap panduan ini telah menerangi jalan bagi Anda dalam petualangan Docker. Ingat, latihan membuat sempurna, jadi jangan khawatir untuk mencoba perintah ini. Selamat Dockering!
Credits: Image by storyset