Memahami Perbedaan Antara Perintah 'COPY' dan 'ADD' di Dockerfile

Memahami Perbedaan Antara Perintah 'COPY' dan 'ADD' di Dockerfile
Memahami Perbedaan Antara Perintah 'COPY' dan 'ADD' di Dockerfile

Perintah Dockerfile Dijelaskan

Perintah 'COPY' dan 'ADD' di Dockerfile berfungsi untuk memasukkan file ke dalam sistem file container Anda, namun keduanya memiliki fungsi berbeda dan skenario penggunaan terbaik. Memahami perbedaan-perbedaan ini sangat penting untuk manajemen Dockerfile yang efisien dan memastikan aplikasi dalam container Anda bekerja seperti yang diharapkan.

Meskipun 'COPY' terutama digunakan untuk menyalin file secara mudah, 'ADD' menawarkan kemampuan tambahan, seperti menangani URL jarak jauh dan mengekstraksi file terkompresi. Artikel ini akan mengeksplorasi nuansa setiap perintah, memandu Anda kapan harus menggunakan salah satu perintah untuk mengoptimalkan build Docker Anda.

Memerintah Keterangan
FROM Menentukan gambar dasar yang akan digunakan untuk gambar Docker yang sedang dibuat.
WORKDIR Menetapkan direktori kerja di dalam wadah.
COPY Menyalin file atau direktori dari host ke sistem file penampung.
ADD Menambahkan file, direktori, atau URL jarak jauh ke sistem file penampung dan dapat menangani ekstraksi file.
RUN Menjalankan perintah di lingkungan kontainer.
EXPOSE Memberi tahu Docker bahwa kontainer mendengarkan port jaringan yang ditentukan saat runtime.

Penjelasan Mendetail tentang Perintah Dockerfile

Skrip pertama menunjukkan penggunaan COPY perintah di Dockerfile. Itu COPY instruksinya mudah dan digunakan untuk menyalin file atau direktori dari sistem host ke sistem file kontainer Docker. Dalam contoh ini, skrip dimulai dengan FROM perintah, yang menentukan gambar dasar sebagai python:3.8-slim-buster . Itu WORKDIR perintah menyetel direktori kerja di dalam wadah ke /app . Ini diikuti oleh COPY perintah, yang menyalin isi direktori saat ini pada host ke /app direktori dalam wadah. Setelah menyalin file, RUN perintah digunakan untuk menginstal paket Python yang diperlukan yang ditentukan dalam requirements.txt mengajukan. Akhirnya, itu EXPOSE perintah membuat port 80 tersedia untuk dunia luar.

Sebaliknya, skrip kedua menyoroti penggunaan ADD perintah di Dockerfile. Mirip dengan skrip pertama, ini dimulai dengan FROM perintah untuk mengatur gambar dasar dan WORKDIR perintah untuk menentukan direktori kerja. Perbedaan utama di sini adalah ADD perintah, yang digunakan untuk menambahkan file dari URL jarak jauh, dalam hal ini, https://example.com/data/archive.tar.gz . Itu ADD perintah tidak hanya menyalin file tetapi juga memiliki kemampuan untuk mengekstrak file terkompresi secara otomatis, seperti yang ditunjukkan selanjutnya RUN perintah yang mengekstrak archive.tar.gz mengajukan ke dalam /app direktori. Setelah ini, RUN perintah menginstal paket Python yang diperlukan, dan EXPOSE perintah membuat port 80 tersedia.

Menggunakan COPY di Dockerfile

Contoh File Docker

# Use an official Python runtime as a parent image
FROM python:3.8-slim-buster

# Set the working directory in the container
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . /app

# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# Make port 80 available to the world outside this container
EXPOSE 80

Menggunakan ADD di Dockerfile

Contoh File Docker

# Use an official Python runtime as a parent image
FROM python:3.8-slim-buster

# Set the working directory in the container
WORKDIR /app

# Add files from a remote URL
ADD https://example.com/data/archive.tar.gz /app/

# Extract the archive file
RUN tar -xzf /app/archive.tar.gz -C /app

# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# Make port 80 available to the world outside this container
EXPOSE 80

Analisis Mendalam tentang COPY dan ADD di Dockerfile

Sementara keduanya COPY Dan ADD perintah melayani tujuan menyalin file dari sistem host ke sistem file kontainer, mereka memiliki fitur dan kasus penggunaan berbeda yang membuatnya sesuai dalam skenario berbeda. Itu COPY perintah lebih sederhana dan lebih dapat diprediksi. Paling baik digunakan untuk penyalinan file dasar yang tidak memerlukan proses tambahan, seperti mengekstraksi arsip atau mengambil file jarak jauh. Perintah ini memastikan bahwa hanya file dan direktori lokal yang disalin ke dalam container, sehingga menjaga lingkungan build yang bersih dan aman.

Di sisi lain, ADD perintah menyediakan lebih banyak fungsionalitas tetapi dengan kompleksitas tambahan dan potensi risiko keamanan. Itu ADD perintah dapat menangani pengunduhan URL dan secara otomatis mengekstrak file terkompresi seperti .tar, .gzip, Dan .bzip2. Hal ini dapat bermanfaat jika proses pembangunan Anda memerlukan aset atau arsip jarak jauh yang perlu diekstraksi selama pembuatan gambar. Namun, fitur tambahan ini memiliki risiko, seperti penimpaan file yang tidak disengaja dan kerentanan keamanan saat mengunduh dari lokasi yang jauh. Oleh karena itu, sangat penting untuk mempertimbangkan faktor-faktor ini dengan cermat ketika memutuskan di antara keduanya COPY Dan ADD.

Pertanyaan dan Jawaban Umum tentang COPY dan ADD di Dockerfile

  1. Apa kegunaan utama dari COPY perintah di Dockerfile?
  2. Itu COPY perintah ini terutama digunakan untuk menyalin file dan direktori lokal dari sistem host ke dalam wadah Docker.
  3. Kapan sebaiknya Anda menggunakan ADD perintah sebagai gantinya COPY?
  4. Anda harus menggunakan ADD perintah ketika Anda perlu menyalin file dari URL atau ketika Anda perlu mengekstrak file terkompresi selama proses pembuatan.
  5. Apa implikasi keamanan dari penggunaan ADD memerintah?
  6. Itu ADD perintah dapat menimbulkan risiko keamanan, terutama saat mengunduh file dari URL jarak jauh, karena berpotensi menimpa file yang sudah ada atau menimbulkan kerentanan.
  7. Bisakah COPY perintah ekstrak file terkompresi?
  8. Tidak, itu COPY perintah tidak memiliki kemampuan untuk mengekstrak file terkompresi; itu hanya menyalinnya apa adanya.
  9. Bagaimana ADD menangani file terkompresi secara berbeda dari COPY?
  10. Itu ADD perintah secara otomatis mengekstrak file terkompresi seperti .tar, .gzip, Dan .bzip2 ketika mereka ditambahkan ke wadah.
  11. Apakah mungkin menggunakan wildcard dengan COPY memerintah?
  12. Ya, Anda dapat menggunakan wildcard dengan COPY perintah untuk menyalin beberapa file atau direktori yang cocok dengan suatu pola.
  13. Apa yang terjadi jika URL diberikan ke ADD perintah tidak dapat dijangkau?
  14. Jika URL diberikan ke ADD perintah tidak dapat dijangkau, proses pembuatan Docker akan gagal.
  15. Perintah mana yang harus Anda gunakan untuk operasi penyalinan file lokal yang sederhana?
  16. Untuk operasi penyalinan file lokal yang sederhana, Anda harus menggunakan COPY perintah karena lebih mudah dan aman.
  17. Bisakah ADD perintah digunakan untuk menambahkan file dari sumber lokal dan jarak jauh?
  18. Ya, itu ADD perintah dapat menambahkan file dari sumber lokal dan URL jarak jauh, membuatnya lebih serbaguna dalam skenario tertentu.

Menyelesaikan Perintah Docker COPY dan ADD

Memahami kapan harus menggunakan COPY Dan ADD di Dockerfile Anda sangat penting untuk mengoptimalkan build container Anda. Ketika COPY mudah dan aman untuk file lokal, ADD memberikan kemampuan ekstra dengan mengorbankan kompleksitas tambahan dan potensi masalah keamanan. Memilih perintah yang tepat berdasarkan kebutuhan spesifik Anda dapat meningkatkan efisiensi dan keamanan image Docker Anda.