Dockerfile, kullanıcının bir görüntüyü bir araya getirmek veya oluşturmak için komut satırında arayabileceği tüm komutları içeren basit bir metin dosyasıdır. Docker derlemesinin yardımıyla, docker dosyasında arka arkaya birden çok komut tanımını çalıştıran derlemeyi kolayca otomatikleştirebilirsiniz.
Örneğin, belirli geliştirme ihtiyaçlarınız için liman işçisi hub'ından liman işçisi görüntüsünü indirmek istiyorsunuz. Ardından görüntüyü güncellemek, geliştirme süreciniz için bazı paketler kurmak istiyorsunuz. Bu durumda, bir docker dosyası oluşturabilir, özel ihtiyaçlarınız için tüm parametreleri dahil edebilir ve özel imajınızı oluşturabilirsiniz. Bir docker dosyası oluşturduktan sonra, geliştirme süreciniz için gerekli tüm paketleri manuel olarak yüklemeden aynı görüntüyü oluşturmak için tekrar tekrar kullanabilirsiniz.
Dockerfile Temel
Dockerfile ile çalışmadan önce, nasıl dockerfile yapılacağını bilmek önemliyse. Dockerfile, belirli bir görüntü oluşturmak için kullanılabilecek belirli anahtar kelimeler içerir. Bir docker dosyasında kullanılan tüm anahtar kelimelerin kısa bir açıklaması aşağıda listelenmiştir:
- DAN: Üzerine inşa edeceğimiz temel imajı tanımlamak için kullanılır.
- EKLE: Oluşturulan konteynere dosya eklemek için kullanılır. Basit bir ifadeyle, RUN komutları çalıştırmak için kullanılır ve sonucu taahhüt eder
- ÇALIŞTIRMAK: Bileşenleri yükleyerek temel görüntüye katman eklemek için kullanılır.
- CMD: Konteynerin başlangıcında komutları çalıştırmak için kullanılır. Bu komutlar, yalnızca kapsayıcı çalıştırılırken belirtilen bir bağımsız değişken olmadığında çalışır.
- GİRİŞ NOKTASI: Konteyner başlatma işlemi sırasında komutları çalıştırmak için kullanılır. Bir görüntü oluşturduktan sonra otomatik olarak bir kapsayıcı başlatmak istiyorsanız, dock dosyanızda bir ENTRYPOINT kullanmalısınız.
- ENV: Container çalışma zamanında ortam değişkenlerini tanımlamak için kullanılır.
- MARUZ BIRAKMAK: Çalışma zamanında ağı etkinleştirmek için dinleme bağlantı noktasını belirtmek için kullanılır.
- BAKICI: Resim oluşturucunun adını ve e-posta kimliğini belirtmek için kullanılır.
- KULLANICI: Container'ı çalıştırmak için kullanılan kullanıcı adını belirtmek için kullanılır.
- SES: Kapsayıcıdan Docker ana bilgisayarındaki dizine erişime izin vermek için kullanılır.
- İŞ DİREKTÖRÜ: Çalışma anında yürütülecek komutun yolunu belirtmek için kullanılır.
- ETİKET: Docker imajına etiket eklemek için kullanılır.
Dockerfile'ı Oluşturmak
Bu bölümde, Ubuntu temel görüntüsünden bir LAMP sunucu görüntüsü oluşturmak için bir docker dosyası oluşturacağız.
İlk olarak, docker dosyasını depolamak için bir dizin oluşturmanız gerekecek. Aşağıdaki komutla oluşturabilirsiniz:
mkdir LAMBAArdından, dizinin içinde Dockerfile adlı bir dizin oluşturun:
nano LAMP/Docker dosyasıAşağıdaki satırları ekleyin:
ubuntu'dan: en sonBAKICI Hitesh Jethva
ENV DEBIAN_FRONTEND=etkileşimsiz
RUN apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-ortak php-mysql php-json php-curl -y
CMD ["apachectl","-D","ÖNGRUNA"]
MARUZ KALMA 8080
İşiniz bittiğinde dosyayı kaydedin ve kapatın.
Dockerfile ile Resim Oluşturma
Dockerfile'ı oluşturduktan sonra, Dockerfile'ın yardımıyla kolayca özel bir LAMP imajı oluşturabilirsiniz.
İlk olarak, dizini LAMP olarak değiştirin ve o dosyadan görüntüyü oluşturmak için aşağıdaki komutu çalıştırın:
cd LAMBAdocker build -t "lamba: Dockerfile".
Yukarıdaki komut, Ubuntu'nun en son görüntüsünü Docker Hub'dan indirmeye ve Dockerfile dosyasında belirtilen gerekli paketleri yüklemeye başlayacaktır. Görüntü başarıyla oluşturulduktan sonra aşağıdaki çıktıyı görmelisiniz:
Yapı bağlamını Docker arka plan programı 2'ye gönderme.048kBAdım 1/6 : ubuntu'dan: en son
en son: Kütüphaneden/ubuntu'dan çekme
54ee1f796a1e: Çekme tamamlandı
f7bfea53ad12: Çekme tamamlandı
46d371e02073: Çekme tamamlandı
b66c17bbf772: Çekme tamamlandı
Özet: sha256:31dfb10d52ce76c5ca0aa19d10b3e6424b830729e32a89a7c6eee2cda2be67a5
Durum: ubuntu için daha yeni bir resim indirildi: en son
---> 4e2eef94cd6b
Adım 2/6 : BAKICI Hitesh Jethva
---> 047977af2c2a'da çalışıyor
Ara kabın çıkarılması 047977af2c2a
---> 1331df625c4c
Adım 3/6 : ENV DEBIAN_FRONTEND=etkileşimsiz
---> 3597152c7a1b'de çalışıyor
Ara kapsayıcıyı çıkarma 3597152c7a1b
---> 86c82c95e75d
Adım 4/6 : apt-get update -y && apt-get install apache2 mariadb-server'ı ÇALIŞTIRIN
libapache2-mod-php php php-cli php-ortak php-mysql php-json php-curl -y
Ara kapsayıcıyı çıkarma 322532299fd9
---> f6897a9554f7
Adım 5/6 : CMD ["apachectl","-D","ÖNGORUN"]
---> 669635bc8bcb'de çalışıyor
Ara kapsayıcıyı çıkarma 669635bc8bcb
---> e8400eb2e677
Adım 6/6 : 8080'İ MARUZ KALDIRIN
---> 937ae2b2d305'te çalışıyor
Ara kapsayıcıyı çıkarma 937ae2b2d305
---> 2123a857361d
2123a857361d başarıyla oluşturuldu
Başarıyla etiketlenen lamba:Dockerfile
Artık yeni oluşturduğunuz bir resmi aşağıdaki komutu çalıştırarak listeleyebilirsiniz:
liman işçisi resimleriAşağıdaki çıktıyı görmelisiniz:
DEPO ETİKETİ GÖRÜNTÜ KİMLIĞI OLUŞTURULAN BOYUTlamba Dockerfile 2123a857361d 44 saniye önce 520MB
ubuntu en son 4e2eef94cd6b 8 gün önce 73.9MB
Artık elinizde özel bir LAMP sunucu imajınız var. Aşağıdaki komutla her komutun geçmişini de görebilirsiniz:
docker geçmişi lambası:DockerfileAşağıdaki çıktıyı görmelisiniz:
BOYUTTA OLUŞTURULAN GÖRÜNTÜ OLUŞTURULDU YORUM2123a857361d 16 dakika önce /bin/sh -c #(nop) EXPOSE 8080 0B
e8400eb2e677 16 dakika önce /bin/sh -c #(nop) CMD ["apachectl" "-D" "FO… 0B
f6897a9554f7 16 dakika önce /bin/sh -c apt-get update -y && apt-get inst… 446MB
86c82c95e75d 17 dakika önce /bin/sh -c #(nop) ENV DEBIAN_FRONTEND=nonin… 0B
1331df625c4c 17 dakika önce /bin/sh -c #(nop) BAKICI Hitesh Jethva 0B
4e2eef94cd6b 8 gün önce /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
LAMP Görüntüsünden Kapsayıcı Oluşturma
Şimdi, aşağıdaki komutu kullanarak görüntünüzden bir kapsayıcı çalıştırabilirsiniz:
docker run -dit lambası:DockerfileKapsayıcı başlatıldıktan sonra aşağıdaki çıktıyı görmelisiniz:
0d2beb7dba01bb763768b116f734ae68286cee00d2ae923b2b7241c39ad54208Aşağıdaki komutu kullanarak çalışan kapsayıcıyı doğrulayabilirsiniz:
liman işçisi psAşağıdaki çıktıyı almalısınız:
KONTEYNER KİMLİK GÖRÜNTÜ KOMUT OLUŞTURULDU DURUM PORT İSİMLERİc14794784eb2 lambası:Dockerfile "apachectl -D FOREGR… " 2 dakika önce Yukarı 2 dakika 0.0.0.0:8080->8080/tcp ilginç_ramanujan
Sonuç
Bu kılavuzda Dockerfile nedir ve Dockerfile ile nasıl docker imajı oluşturulacağını öğrendiniz. Bu, çekilen bir görüntüde değişiklik yapmak yerine özel görüntülerinizi oluşturmak için çok kullanışlıdır.