![Dockerfile'da 'COPY' ve 'ADD' Komutları Arasındaki Farkları Anlamak](https://www.tempmail.us.com/images/04/04169ca3324eaf23caed5fea669d96e1-836px.webp/dockerfile-da-copy-ve-add-komutlari-arasindaki-farklari-anlamak-836px.webp)
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
- Birincil kullanımı nedir? COPY Docker dosyasındaki komut?
- COPY komutu öncelikle yerel dosyaları ve dizinleri ana bilgisayar sisteminden Docker kapsayıcısına kopyalamak için kullanılır.
- Ne zaman kullanmalısınız? ADD bunun yerine komut COPY?
- Ş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.
- kullanmanın güvenlik açısından sonuçları nelerdir? ADD emretmek?
- 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.
- Kutu COPY sıkıştırılmış dosyaları çıkarma komutu?
- Hayır, COPY komutun sıkıştırılmış dosyaları çıkarma özelliği yoktur; onları oldukları gibi kopyalar.
- Nasıl ADD sıkıştırılmış dosyaları farklı şekilde işleme COPY?
- ADD komut, aşağıdaki gibi sıkıştırılmış dosyaları otomatik olarak çıkarır: .tar, .gzip, Ve .bzip2 konteynere eklendiklerinde.
- ile joker karakterler kullanmak mümkün mü? COPY emretmek?
- Evet, joker karakterleri kullanabilirsiniz. COPY bir kalıpla eşleşen birden fazla dosya veya dizini kopyalama komutu.
- Bir URL sağlanırsa ne olur? ADD komuta ulaşılamıyor mu?
- Bir URL sağlanırsa ADD komutuna ulaşılamıyorsa Docker oluşturma işlemi başarısız olur.
- Basit, yerel dosya kopyalama işlemi için hangi komutu kullanmalısınız?
- Basit, yerel dosya kopyalama işlemleri için COPY Daha basit ve güvenli olduğundan komut verin.
- Kutu ADD komutu hem yerel hem de uzak kaynaklardan dosya eklemek için kullanılabilir mi?
- 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.