Liman işçisi Paketlenmiş uygulamaları oluşturur Konteynerler denir. Her konteyner, benzer bir ortam sağlar. sanal makine (Vm). VMS, Docker Konteynerlerinin aksine Tam bir işletim sistemi çalıştırmayın . Host'unuzu çekirdeğinizi paylaşırlar ve bir yazılım düzeyinde sanallaştırırlar.
Docker Temelleri
Docker, yazılım geliştiricileri ve sistem yöneticileri için standart bir araç haline gelmiştir. Sisteminizin geri kalanını etkilemeden başvuruları hızlı bir şekilde başlatmanın temiz bir yoludur. Tek ile yeni bir hizmet döndürebilirsiniz
Docker koşusu
emretmek.
Konteynerler, işletim sistemi paketi bağımlılıklarından kendi kaynak kodunuza kadar bir uygulamayı çalıştırmak için gereken her şeyi enksüle eder. Bir konteynerin oluşturma adımlarını bir talimat olarak tanımlarsınız.
Dockerfile
. Docker, inşa etmek için DockerFile'u kullanır.
görüntü
.
Görüntüler, kaplarda bulunan yazılımı tanımlar. Bu, bir işletim sistemi ISO ile bir VM başlatmak için gevşek bir şekilde eşdeğerdir. Bir resim oluşturursanız, herhangi bir Docker kullanıcısı uygulamanızı başlatabilecektir.
Docker koşusu
.
Docker nasıl çalışıyor?
Kaplar, kısmen sanallaştırılmış ortamlar sağlamak için işletim sistemi çekirdeği özelliklerini kullanır. Gibi komutlarla sıfırdan kaplar oluşturmak mümkündür
kroot
. Bu, sistem kökü yerine belirli bir kök diziniyle bir işlem başlatır. Ancak çekirdek özelliklerini doğrudan kullanmak, asfalt, güvensiz ve hata eğilimidir.
Docker, konteynerlerin üretimi, dağıtımı ve kullanımı için eksiksiz bir çözümdür. Modern Docker Bültenleri oluşur. Birkaç bağımsız bileşen . İlk önce, docker var Cli , terminalinizde etkileşim kurdunuz. CLI, komutları bir gönderir. Docker Daemon . Bu yerel olarak çalışabilir veya uzak bir ev sahibi . Daemon, kapları ve oluşturulan görüntüleri yönetmekten sorumludur.
Son bileşen denir Konteyner Çalışma Zamanı . Çalışma zamanı, kapları aslında başlatmak için çekirdek özelliklerini çağırır. Docker, yapışan çalışma süreleri ile uyumludur. OCI özellikleri. Bu açık standart, farklı konteynerizasyon araçları arasında birlikte çalışabilirliğe izin verir.
İlk başlarken, Docker'ın iç işleri hakkında çok fazla endişelenmenize gerek yok. Yükleme
liman işçisi
Sisteminizde, konteynerleri oluşturmak ve çalıştırmak için ihtiyacınız olan her şeyi size verecektir.
Neden bu kadar çok insan Docker kullanıyor?
Konteynerler çok popüler hale geldi, çünkü yazılım geliştirmede birçok ortak zorlukları çözüyorlar. Bir kez konteyner hale getirme ve her yerde koşma yeteneği arasındaki boşluğu azaltır Geliştirme ortamınız ve üretim sunucularınız.
Kapları kullanmak, her ortamın aynı olduğuna güven verir. Yeni bir takım üyeniz varsa, sadece ihtiyaçları var.
Docker koşusu
kendi geliştirme örneğini ayarlamak için. Servisinizi başlattığınızda, imalatın dağıtılması için Docker resminizi kullanabilirsiniz. NS
canlı çevre
Yerel örneğinize tam olarak eşleşecek, "Makinemde çalışıyor" senaryolarından kaçınacak.
Docker, tam şişmiş bir sanal makineden daha uygundur. VMS, olası her iş yükünü desteklemek için tasarlanmış genel amaçlı araçlardır. Buna karşılık, konteynerler hafif, kendi kendine yeterince ve atılan kullanım durumlarına daha uygundur. Docker'ın ana bilgisayarın çekirdeğini paylaştığı için, konteynerler sistem performansı üzerinde ihmal edilebilir bir etkiye sahiptir. Konteyner lansmanı süresi neredeyse anında, sadece bir işletim sistemi değil, yalnızca başlangıç işlemleri yaptığınız gibi.
Başlarken
Docker, tüm popüler Linux dağıtımlarında mevcuttur. Ayrıca Windows ve MacOS'ta çalışıyor. Takip et Platformunuz için Docker Kurulum Talimatları almak ve koşmak için.
Basit bir konteyner başlatarak kurulumunuzun çalıştığını kontrol edebilirsiniz:
Docker Hello-World Run
Bu, temel ile yeni bir konteyner başlatacak
Selam Dünya
görüntü. Görüntü, Docker'ın nasıl kullanılacağını açıklayan bazı çıktı yayar. Konteyner sonra çıkar, sizi terminalinize geri çeker.
Görüntüler oluşturma
Bir kez koştuğun
Selam Dünya
, Kendi Docker görüntülerinizi oluşturmaya hazırsınız. Bir DockerFile, hizmetinizi nasıl çalıştıracağınızı açıklar.
Gerekli yazılımı takma
ve dosyalarda kopyalama. İşte Apache Web sunucusunu kullanarak basit bir örnek:
httpd'den: en son Echo "LoadModule Headers_Module modüllerini / mod_headers.so" & gt; & gt; /usr/local/apache2/conf/httpd.conf Kopyala .htaccess /var/www/html/.htaccess Kopyalama index.html /var/www/html/index.html CSS / / VAR / WWW / HTML / CSS kopyasını
NS
İTİBAREN
Çizgi temel görüntüyü tanımlar. Bu durumda, resmi Apache görüntüsünden başlıyoruz. Docker, DockerFile'inizdeki kalan talimatları, taban görüntüsünün üstüne uygular.
NS
ÇALIŞTIRMAK
Sahne, konteyner içindeki bir komutu çalıştırır. Bu, kabın ortamında mevcut herhangi bir komut olabilir. Biz etkinleştiriyoruz
başlıklar
Tarafından kullanılabilecek Apache modülü
.htaccess
Yönlendirme kuralları kurmak için dosya.
Son çizgiler, çalışma dizininizdeki HTML ve CSS dosyalarını konteyner görüntüsüne kopyalayın. Resminiz şimdi web sitenizi çalıştırmak için ihtiyacınız olan her şeyi içerir.
Şimdi, resmi oluşturabilirsiniz:
Docker, web sitesi: V1.
Docker, imajı oluşturmak için DockerFile'ınızı kullanır. Terminalinizdeki çıktıyı, Docker'ın talimatlarınızın her birini çalıştırdığı için göreceksiniz.
NS
-T
komutta
Resminizi Etiketler
belirli bir isimle (
Benim web sitesi: v1
). Bu, gelecekte başvurmayı kolaylaştırır. Etiketler, bir kolonla ayrılmış iki bileşene sahiptir. İlk parça görüntü adını ayarlarken, ikincisi genellikle versiyonunu belirtir. Eğer kolonu atlarsan, Docker varsayılan olacak
kullanmak
En son
Etiket versiyonu olarak.
NS
.
Komutun sonunda, yerel çalışma dizininizde DockerFile'i kullanmasını söyler. Bu aynı zamanda
Yapı bağlamını ayarlar
, çalışma dizininizde dosya ve klasörleri kullanmanıza izin vermek
Kopya
DockerFile'inizdeki talimatlar.
Resminizi oluşturduktan sonra, kullanarak bir konteyner başlatabilirsiniz.
Docker koşusu
:
Docker Run -D -P 8080: 80 My-Web Sitesi: V1
Birkaç ilave bayrak kullanıyoruz
Docker koşusu
Burada. NS
-NS
Bayrak, Docker CLI'yu kaptan çıkarır ve arka planda çalışmasına izin verir. Bir bağlantı noktası eşleme ile tanımlanır
-P
, böylece ana bilgisayar haritalarınızda konteynerde 80 numaralı bağlantı noktasına 8080. Ziyaret ederseniz web sayfanızı görmelisiniz
Localhost: 8080
Tarayıcınızda.
Docker görüntüleri katmanlardan oluşur. DockerFile'inizdeki her komut yeni bir katman oluşturur. Gelişmiş yapı özelliklerini kullanabilirsiniz. Referans Çoklu Baz Görüntüleri , daha önceki görüntülerden aracı katmanları atma.
Resim Kayıtları
Bir görüntünüz olduğunda, bir kayıt defterine itebilirsiniz. Kayıtlar merkezi depolama sağlamak Böylece kapları başkalarıyla paylaşabilirsiniz. Varsayılan kayıt defteri Docker Hub .
Bir resme atanır bir komut çalıştırdığınızda, Docker ilk önce yerel olarak mevcut olup olmadığını kontrol eder. Değilse, Docker Hub'tan çekmeye çalışacaktır. Görüntüleri ile manuel olarak çekebilirsiniz.
Docker çekin
emretmek:
Docker Çekin Httpd: Son
Bir resim yayınlamak istiyorsanız, bir
Docker Hub
hesap. Çalıştırmak
Docker girişi
Ve kullanıcı adınızı ve şifrenizi girin.
Sonra, imajınızı Docker Hub kullanıcı adınızı kullanarak etiketleyin:
Docker Tag my-Image: Son Docker-Hub-Kullanıcı Adı / My-Image: En son
Şimdi, resminizi zorlayabilirsiniz:
Docker Push Docker-Hub-username / image: en son
Diğer kullanıcılar görüntünüzü çekip kapsayıcıları başlatabilecektir.
Yapabilirsiniz Kendi kayıt defterini yönet Özel görüntü depolamaya ihtiyacınız varsa. Birkaç üçüncü taraf hizmetleri de Docker kayıtları teklif et Docker Hub'a alternatif olarak.
Konteynırlarınızı Yönetme
Docker CLI, koşu kaplarınızı yönetmenize izin vermek için çeşitli komutları vardır. İşte bildiği en faydalı olanlardan bazıları:
Konteynerleri listeleme
Docker PS
Tüm çalışan konteynırlarınızı size gösterir. Eklemek
-a
Bayrak da durdurulmuş kapları gösterecektir.
Kapları durdurmak ve başlatmak
Bir kabı durdurmak için koşun
Docker'u durdur
. Yer değiştirmek
benim konteyner
kabın adı veya kimliği ile. Bu bilgiyi
ps
emretmek. Durdurulmuş bir konteyner yeniden başlatıldı
Docker BAŞLADI
.
Konteynerler genellikle ana işlemlerinin canlı kaldıkları sürece çalışır.
Politikaları yeniden başlat
Bir konteyner durduğunda veya ana bilgisayarınızın yeniden başlatıldığında ne olacağını kontrol edin. Geçmek
- her zaman
ile
Docker koşusu
Bir konteyner durdurduktan hemen sonra yeniden başlatılması.
Kabuk almak
Yapabilirsiniz
bir komuta çalıştırmak
kullanarak bir kap
Docker Exect My-Container My-Commandy
. Bu, konteynerin ana işlemine ayıran bir çalıştırılabilir olanı manuel olarak çağırmak istediğinizde kullanışlıdır.
Ekle
-o
Etkileşimli erişime ihtiyacınız varsa bayrak. Bu, koşarak bir kabuğa düşmenizi sağlar
Docker Exec-BY konteyner sh
.
İzleme Günlükleri
Docker, bir konteynerin standart girişine ve çıkış akışlarına yayılan çıktıyı otomatik olarak toplar. NS
Docker konteynerime günlükler
Komut, terminalinizin içindeki bir konteynerin günlüklerini gösterecektir. NS
--takip et
Bayrak sürekli bir akış oluşturur, böylece günlükleri gerçek zamanlı olarak görüntüleyebilirsiniz.
Temizlik kaynakları
Eski kaplar ve görüntüler sisteminize hızlı bir şekilde yığılabilir. Kullanmak
Docker RM My-Container
Bir konteyneri kimliği veya adı ile silmek için.
Görüntüler için komut
Docker rmi my-image: en son
. Görüntünün kimliğini veya tam etiket adını geçirin. Bir etiket belirlerseniz, görüntü atanan daha fazla etiket yok olana kadar silme olmaz. Aksi takdirde, verilen etiket kaldırılacak ancak görüntünün diğer etiketleri kullanılabilir kalacaktır.
Toplu temizleme, kullanılması mümkündür
Docker prune
emretmek
. Bu, tüm durdurulan konteynırları ve yedek görüntüleri kaldırmanın kolay bir yolu verir.
Grafik Yönetimi
Terminal sizin işiniz değilse, üçüncü taraf araçlarını kullanabilirsiniz. Docker için grafiksel bir arayüz oluşturun . Web Dashboards, kurulumunuzu hızlı bir şekilde izlemenizi ve yönetmenizi sağlar. Ayrıca kaplarınızın uzaktan kumandasını almanıza yardımcı olurlar.
Kalıcı veri depolama
Docker kapları varsayılan olarak efemeraldir. Konteynerin dosya sisteminde yapılan değişiklikler, konteyner durduktan sonra devam etmeyecektir. Güvenli değil
Herhangi bir dosya depolama sistemi formunu çalıştırın
Bir kapta temel ile başladı
Docker koşusu
emretmek.
Birkaç farklı yaklaşım var Kalıcı verileri yönetmek . En yaygın olanı, bir docker hacmi kullanmaktır. Hacimler depolama birimleridir Bu konteyner dosya sistemlerine monte edilmiştir. Birimdeki herhangi bir veri, bağlantılı konteyner durdurulduktan sonra gelecekte başka bir konteyner bağlamanıza izin verir.
Güvenlik Bakımı
Dockerize edilmiş iş yükleri, Docker, işletim sistemi ile hizmetleriniz arasında biraz ayrılma sağlarken, çıplak metal meslektaşlarından daha güvenli olabilir. Bununla birlikte, Docker potansiyel bir güvenlik sorunudur, çünkü
normalde çalışır
kök
ve kötü amaçlı yazılımları çalıştırmak için sömürülebilirdi.
Yalnızca Docker'ı geliştirme aracı olarak kullanıyorsanız, varsayılan kurulum genellikle kullanmak için güvenlidir. Üretim sunucuları ve şebeke maruz kalmış bir Daemon soketine sahip makineler, yaşamadan önce sertleştirilmelidir.
Docker kurulumunuzu denetleyin Potansiyel güvenlik sorunlarını tanımlamak için. Var Otomatik araçlar mevcut Bu, zayıflıkları bulmanıza ve kararları önermenize yardımcı olabilir. Ayrıca Bireysel konteyner görüntülerini tarayın İçinden sömürülebilen sorunlar için.
Birden fazla kap ile çalışma
NS
liman işçisi
Komut yalnızca bir seferde bir kap ile çalışır. Sık sık toplamda kapları kullanmak istiyorsunuz.
Docker oluşturma
Konteynırlarınızı bir YAML dosyasında bildirmenize izin veren bir araçtır. Bunları tek bir komutla başlayabilirsiniz.
Bu, projeniz, bir veritabanı sunucusuna dayanan bir Web arka uçu gibi diğer hizmetlere bağlı olduğunda yardımcı olur. Her iki konteyneri de tanımlayabilirsiniz.
Docker-Compose.yml
ve aerodinamik yönetimden yararlanmak
Otomatik ağ
.
İşte basit bir
Docker-Compose.yml
dosya:
Sürüm: "3"
Hizmetler:
uygulama:
Image: App-Server: en son
Limanlar:
- 8000: 80
veri tabanı:
Image: Veritabanı-sunucu: en son
birimler:
- Veritabanı-Veri: / Veri
birimler:
Veritabanı-Veri:
Bu iki konteyneri tanımlar (
uygulama
ve
veri tabanı
). Veritabanı için bir hacim oluşturulur. Bu monte edilir
/veri
kabın içinde. Uygulama sunucusunun 80 numaralı bağlantı noktası ana bilgisayarda 8000 olarak maruz kalır. Çalıştırmak
Docker-BOBOSE UP -D
Ağ ve hacim de dahil olmak üzere her iki hizmeti de döndürmek için.
Docker Box kullanımı size izin verir
yeniden kullanılabilir yaz
Başkalarıyla paylaşabileceğiniz konteyner tanımları. Taahhütte bulunabilirsin
Docker-Compose.yml
Geliştiricilerin ezberlenmesi yerine sürüm kontrolünüze
Docker koşusu
komutlar.
Birden fazla konteyner çalıştırmak için başka yaklaşımlar da var. Docker uygulaması başka bir soyutlama düzeyi sağlayan gelişmekte olan bir çözüm. Ekosistemde başka bir yerde, Podman bir docker alternatifidir Bu, terminalinizdeki konteynerlerin "bakla" oluşturmanızı sağlar.
Konteyner Orkestrasyonu
Docker normalde üretimde olduğu gibi çalışmıyor. Bu gibi bir orkestrasyon platformunu kullanmak artık daha yaygındır. Kubbernetler veya Docker Swarm modu. Bu araçlar işlemek için tasarlanmıştır Çoklu Konteyner Replicas, Ölçeklenebilirlik ve güvenilirliği artırır.
Docker, daha geniş kaplama hareketinde yalnızca bir bileşendir. Orkestratörler
aynı şekilde yararlanmak
Konteyner çalışma zamanı teknolojileri, üretim için daha iyi bir ortam sağlamak için. Birden fazla konteyner örneği kullanarak
Rolling güncellemelerine izin verir
Makineler arasında dağıtımın yanı sıra, dağıtımınızı değiştirmek ve kesinti yapmak için daha esnek hale getirmek. Düzenli
liman işçisi
CLI bir konakçıyı hedefler ve bireysel kaplarla çalışır.
Konteynerler için güçlü bir platform
Docker, konteynerlerle çalışmak için ihtiyacınız olan her şeyi size verir. Yazılım geliştirme ve sistem yönetimi için önemli bir araç haline gelmiştir. Asıl faydalar, bireysel hizmetler için izolasyon ve taşınabilirlik artmaktadır.
Docker ile tanışmak, temel konteyner ve görüntü kavramlarını anlama gerektirir. Bunları, iş yüklerinizi kapsayan özel görüntülerinizi ve ortamlarınızı oluşturmak için uygulayabilirsiniz.