Dockerfile'da 'COPY' ve 'ADD' Komutları Arasındaki Farkları Anlamak

Dockerfile'da 'COPY' ve 'ADD' Komutları Arasındaki Farkları Anlamak
Dockerfile'da 'COPY' ve 'ADD' Komutları Arasındaki Farkları Anlamak

Dockerfile Komutlarının Açıklaması

Dockerfile'daki 'COPY' ve 'ADD' komutları, dosyaları kapsayıcınızın dosya sistemine tanıtmaya yarar, ancak farklı işlevler ve en iyi kullanım senaryolarıyla birlikte gelirler. Bu farklılıkları anlamak, verimli Dockerfile yönetimi ve konteynerli uygulamalarınızın beklendiği gibi performans göstermesini sağlamak için çok önemlidir.

'COPY' öncelikli olarak doğrudan dosya kopyalama için kullanılırken, 'ADD' uzak URL'leri işlemek ve sıkıştırılmış dosyaları çıkarmak gibi ek yetenekler sunar. Bu makale, her komutun nüanslarını inceleyerek Docker yapılarınızı optimize etmek için birini diğerinin üzerine ne zaman kullanmanız gerektiği konusunda size yol gösterecektir.

Emretmek Tanım
FROM Oluşturulmakta olan Docker görüntüsü için kullanılacak temel görüntüyü belirtir.
WORKDIR Kabın içindeki çalışma dizinini ayarlar.
COPY Dosyaları veya dizinleri ana bilgisayardan kabın dosya sistemine kopyalar.
ADD Kapsayıcının dosya sistemine dosyalar, dizinler veya uzak URL'ler ekler ve dosya çıkarma işlemini gerçekleştirebilir.
RUN Kapsayıcının ortamında bir komutu yürütür.
EXPOSE Docker'a kapsayıcının çalışma zamanında belirtilen ağ bağlantı noktalarını dinlediğini bildirir.

Dockerfile Komutlarının Ayrıntılı Açıklaması

İlk komut dosyası kullanımını gösterir COPY Docker dosyasındaki komut. COPY talimat basittir ve dosyaları veya dizinleri ana bilgisayar sisteminden Docker konteynerinin dosya sistemine kopyalamak için kullanılır. Bu örnekte, komut dosyası şununla başlar: FROM Temel görüntüyü şu şekilde belirten komut: python:3.8-slim-buster . WORKDIR komut, kabın içindeki çalışma dizinini şu şekilde ayarlar: /app . Bunu şu takip eder: COPY Ana bilgisayardaki geçerli dizinin içeriğini sunucuya kopyalayan komut /app kapsayıcıdaki dizin. Dosyaları kopyaladıktan sonra RUN komutu, belirtilen gerekli Python paketlerini yüklemek için kullanılır. requirements.txt dosya. Son olarak, EXPOSE komutu, 80 numaralı bağlantı noktasını dış dünyaya açık hale getirir.

Buna karşılık, ikinci komut dosyası, ADD Docker dosyasındaki komut. İlk senaryoya benzer şekilde, şu şekilde başlar: FROM Temel görüntüyü ayarlama komutu ve WORKDIR çalışma dizinini tanımlama komutu. Buradaki en önemli fark, ADD uzak bir URL'den dosya eklemek için kullanılan komut, bu durumda, https://example.com/data/archive.tar.gz . ADD komut yalnızca dosyaları kopyalamakla kalmaz, aynı zamanda sonraki örnekte gösterildiği gibi sıkıştırılmış dosyaları otomatik olarak çıkarma yeteneğine de sahiptir. RUN ayıklayan komut archive.tar.gz içine dosya /app dizin. Bunu takiben, RUN komutu gerekli Python paketlerini yükler ve EXPOSE komutu 80 numaralı bağlantı noktasını kullanılabilir hale getirir.

Docker dosyasında COPY'yi kullanma

Docker dosyası örneği

# 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

Dockerfile'da ADD'yi kullanma

Docker dosyası örneği

# 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

Dockerfile'da COPY ve ADD'nin Derinlemesine Analizi

Her ikisi de COPY Ve ADD komutlar, dosyaları ana bilgisayar sisteminden kabın dosya sistemine kopyalama amacına hizmet eder; farklı özelliklere ve her birini farklı senaryolara uygun kılan kullanım durumlarına sahiptirler. COPY komut daha basit ve daha öngörülebilirdir. Arşivlerin çıkarılması veya uzak dosyaların getirilmesi gibi hiçbir ek işlemin gerekli olmadığı temel dosya kopyalama için en iyi şekilde kullanılır. Bu komut, yalnızca yerel dosyaların ve dizinlerin konteynere kopyalanmasını sağlar, böylece temiz ve güvenli bir yapı ortamı korunur.

Öte yandan, ADD komutu daha fazla işlevsellik sağlar ancak ek karmaşıklık ve olası güvenlik riskleriyle birlikte gelir. ADD komut, URL indirmelerini işleyebilir ve aşağıdakiler gibi sıkıştırılmış dosyaları otomatik olarak çıkarabilir: .tar, .gzip, Ve .bzip2. Bu, derleme sürecinizin, görüntü oluşturma sırasında çıkarılması gereken uzak varlıklar veya arşivler gerektirdiği durumlarda faydalı olabilir. Ancak bu ekstra özellikler, dosyaların yanlışlıkla üzerine yazılması ve uzak konumlardan indirirken güvenlik açıkları gibi riskleri de beraberinde getirir. Bu nedenle, aralarında karar verirken bu faktörleri dikkatlice dikkate almak çok önemlidir. COPY Ve ADD.

Dockerfile'da COPY ve ADD ile ilgili Sık Sorulan Sorular ve Cevaplar

  1. Birincil kullanımı nedir? COPY Docker dosyasındaki komut?
  2. COPY komutu öncelikle yerel dosyaları ve dizinleri ana bilgisayar sisteminden Docker kapsayıcısına kopyalamak için kullanılır.
  3. Ne zaman kullanmalısınız? ADD bunun yerine komut COPY?
  4. Şunu kullanmalısın: ADD Bir URL'den dosya kopyalamanız gerektiğinde veya derleme işlemi sırasında sıkıştırılmış dosyaları çıkarmanız gerektiğinde bu komutu kullanabilirsiniz.
  5. kullanmanın güvenlik açısından sonuçları nelerdir? ADD emretmek?
  6. ADD komutu, potansiyel olarak mevcut dosyaların üzerine yazabileceği veya güvenlik açıkları oluşturabileceği için, özellikle uzak URL'lerden dosya indirirken güvenlik riskleri oluşturabilir.
  7. Kutu COPY sıkıştırılmış dosyaları çıkarma komutu?
  8. Hayır, COPY komutun sıkıştırılmış dosyaları çıkarma özelliği yoktur; onları oldukları gibi kopyalar.
  9. Nasıl ADD sıkıştırılmış dosyaları farklı şekilde işleme COPY?
  10. ADD komut, aşağıdaki gibi sıkıştırılmış dosyaları otomatik olarak çıkarır: .tar, .gzip, Ve .bzip2 konteynere eklendiklerinde.
  11. ile joker karakterler kullanmak mümkün mü? COPY emretmek?
  12. Evet, joker karakterleri kullanabilirsiniz. COPY bir kalıpla eşleşen birden fazla dosya veya dizini kopyalama komutu.
  13. Bir URL sağlanırsa ne olur? ADD komuta ulaşılamıyor mu?
  14. Bir URL sağlanırsa ADD komutuna ulaşılamıyorsa Docker oluşturma işlemi başarısız olur.
  15. Basit, yerel dosya kopyalama işlemi için hangi komutu kullanmalısınız?
  16. Basit, yerel dosya kopyalama işlemleri için COPY Daha basit ve güvenli olduğundan komut verin.
  17. Kutu ADD komutu hem yerel hem de uzak kaynaklardan dosya eklemek için kullanılabilir mi?
  18. Evet ADD komutu, hem yerel kaynaklardan hem de uzak URL'lerden dosyalar ekleyebilir, bu da onu belirli senaryolarda daha çok yönlü hale getirir.

Docker COPY ve ADD Komutlarını Tamamlama

Ne zaman kullanılacağını anlamak COPY Ve ADD Dockerfile'ınızda konteyner yapılarınızı optimize etmek için gereklidir. Sırasında COPY Yerel dosyalar için basit ve güvenlidir, ADD ilave karmaşıklık ve potansiyel güvenlik endişeleri pahasına ekstra yetenekler sağlar. Özel ihtiyaçlarınıza göre doğru komutu seçmek Docker görüntülerinizin verimliliğini ve güvenliğini artırabilir.