‫Tamam, biraz eğlenceli şeyler yapalım. Bu derste, hızlı bir şekilde imajlar ve konteynerler arasındaki
‫farktan bahsedeceğiz. Sonra hemen bir konteyner ile oynamaya
‫başlayacağız. Onu başlatacağız, durduracağız ve
‫kaldıracağız ve bazı genel yönetim işlevlerini yerine getireceğiz. Ardından konteyner günlüklerini ve konteynerimizde
‫çalışan süreçleri kontrol edeceğiz.
‫Bu yüzden hızlıca başlamadan önce, imaj ve konteyner arasındaki farkı bilmekte fayda var. Bir imaj, uygulamanızı oluşturan
‫ikili dosyalar, kütüphaneler ve kaynak koddur. Konteyner, bu görüntünün çalışan
‫bir örneğidir.
‫Şimdi, hepsi aynı görüntüyü temel alan çok sayıda konteynere sahip olabilirsiniz. Bu derste, Açık Kaynak Nginx web
‫sunucusunu kullanacağız. Bu yüzden konteynerlerimizi bu Nginx
‫imajını temel alarak başlatacağız. Tüm resimlerimizi kayıtlardan alıyoruz. GitHub kaynak kodu için neyse,
‫kayıt defterleri de odur. İmaj kayıtları konteyner imajları içindir ve Docker için varsayılan olanı hub adresinden kontrol
‫edebileceğiniz Docker Hub'dır.
‫docker. com.
‫Bununla daha sonra daha fazla oynayacağız.
‫Ancak şimdilik bu iki şeyin oldukça farklı olduğunu ve bir sonraki bölümde görüntülere geçeceğimizi
‫unutmayın.
‫Ancak şimdilik konteynerlere odaklanalım.
‫Tamam, şimdi yeni bir konteyner başlatacağız ve bu konteyneri yönetmek için bazı Docker komutlarını kullanacağız.
‫docker container run
‫publish 80:80 nginx.
‫Tüm bunların ne anlama geldiğini bilmiyorsanız endişelenmeyin. Bir dakika içinde hepsini gözden geçireceğiz.
‫Enter'a basacağım.
‫tarayıcıma geçiyorum ve localhost yazıyorum.
‫İşte oldu.
‫Nginx sunucumuz dinliyor. Birkaç kez yenile tuşuna basabilirim ve komut satırımızda gerçekleşen
‫günlük girdilerini burada görebilirsiniz.
‫Şimdi ne yaptık biz? Docker motoru arka
‫planda aslında nginx adında bir görüntü aradı ve Docker Hub'dan nginx
‫için en son görüntüyü çekti. Daha sonra kullanmamız için yeni bir konteynerde yeni bir süreç olarak başlattı.
‫Komutun yayınlanan kısmı, yerel makinemdeki 80 numaralı yerel bağlantı noktamı açığa çıkarır ve buradan gelen tüm
‫trafiği 80 numaralı bağlantı noktasında bu konteynerin içinde çalışan yürütülebilir dosyaya gönderir.
‫Nginx bir web sunucusu olduğu için varsayılan olarak 80 numaralı bağlantı noktasını kullanacak ve trafik otomatik olarak tarayıcım
‫üzerinden yerel ana bilgisayarıma ve bu konteynere yönlendirilecek.
‫Ancak bu şeyin her zaman komut satırımızın içinde ön planda çalışmasını istemeyiz.
‫Control c'ye basalım ve Yukarı Ok'a basacağım ve biraz geri gidip detach yazacağım.
‫Şimdi detach Docker'a arka planda çalıştırmasını söyler.
‫Ve konteynerimizin benzersiz konteyner kimliğini geri alırız.
‫Ve her yeni bir konteyner çalıştırdığınızda yeni bir benzersiz kimlik alırsınız.
‫Tarayıcımıza geri dönüp birkaç kez yenileme tuşuna basarsak hala çalıştığını görebilirsiniz.
‫Şimdi konteynerlerimizi listelemek için bir komut verelim. docker container ls Ve burada hala çalışmakta
‫olanı göreceksiniz.
‫Az önce çalıştırdığımız komutun konteyner kimliğiyle eşleşiyor. Yeni başlattığımız konteynerin hala çalıştığını
‫göreceksiniz.
‫O yüzden şu konteyneri hemen durduralım.
‫docker konteyner durdurma. Ardından konteyner kimliği. Konteyner kimliği için yalnızca benzersiz
‫olması için yeterli olan ilk birkaç rakamı yazmam gerekiyor ve bunu durdurdum.
‫Şimdi bir docker container ls yaparsam, hiçbir şey görünmediğini fark edeceksiniz.
‫Bu yüzden ls komutu sadece varsayılan olarak çalışan konteynerleri gösterir.
‫Eğer ls -a yaparsam, iki tane çıkıyor. Şimdi, neden iki tane alıyorum?
‫Her seferinde docker container run komutunu çalıştırdığımızda, bu Nginx imajından yeni
‫bir konteyner başlattı. Burada sağ tarafta rastgele isimler olduğunu fark edeceksiniz. Bunları kullanmadık.
‫Bunları nasıl aldık?
‫Böylece konteyner kimliği her zaman bizim için oluşturulur.
‫Ayrıca adın da benzersiz olması gerekmektedir.
‫Ve eğer biz belirtmezsek, bizim için yaratılacaktır. Bir şeye her zaman kendimiz isim verebiliriz,
‫ancak kendi ismini seçmesine izin verirsek, aslında Docker'ın ilginç bir geçmişi
‫var, yıllardır bu ismi açık kaynaklı bir sıfat listesinden ve önemli bilgisayar korsanlarının
‫veya bilim adamlarının soyadlarından rastgele oluşturuyorlar.
‫Ve bazen gerçekten tuhaf isimlerle karşılaşmak oldukça komik oluyor.
‫Öyleyse yeni bir tane oluşturalım. docker konteyner çalıştır. Yayınlayalım
‫ve ayrılalım.
‫Ancak bu sefer bir isim belirleyeceğiz. Ben buna webhost nginx diyeceğim.
‫Ve şimdi docker container ls -a yaparsam üç konteyner göreceksiniz.
‫Yeni başladığımız. Bir webhost adı ve ardından daha önce başlattığımız ve sonra
‫durdurduğumuz iki tane var.
‫Bunu artık ön planda çalıştırmadığımız için günlükleri göremiyoruz.
‫Şimdi tarayıcımıza geri dönelim ve bazı günlükler oluşturmak için birkaç kez yenile düğmesine basacağım.
‫Sonra terminalimize geri dönüp docker container logs webhost yapacağım. Ve web sunucusundaki en son günlükleri çıkaracaktır.
‫Günlükleri otomatik olarak takip etmesi için logs komutu üzerinde oynamak isteyeceğiniz birkaç seçenek
‫vardır veya sadece son birkaç günlük olayını yakalayabilir, böylece tüm günlük dosyasının ekranınıza dökülmesini
‫önleyebilirsiniz.
‫Çalışan konteyneri kontrol etmek için diğer bazı docker konteyner komutlarını da kullanabiliriz. Docker container top'ı deneyebiliriz.
‫Yardımı orada görebilirsiniz.
‫Bu bize konteyner adı webhost belirtmemiz gerektiğini bildirir. Bunun konteyner içinde çalışan süreç olduğunu görebilirsiniz.
‫Şimdi Nginx için tüm bunları bilmemize gerek yok ama Nginx'te aslında bir ana
‫süreç olduğunu
‫ve ardından yapılandırmaya dayalı olarak alt süreçler oluşturduğunu belirtmek ilginçtir.
‫Yine her zaman docker container ve --help yazarak bu konteyner üzerinde deneyebileceğimiz tüm komutların
‫bir listesini alabiliriz.
‫Şimdi az önce yaptığımız şeyi temizleyelim.
‫Şimdi bir docker konteyneri yapalım.
‫ls -a, ve bu üç konteynerimi de listeleyecek.
‫Şimdi, aslında üçünü de aynı anda çıkaracağım.
‫Bazen Docker'ın alt komutları aslında birden fazla değer alabilir.
‫Yani bu durumda bir docker container rm yapabilirim ve sonra 63f 690 ve ode'yi belirtebilirim.
‫Whoops 0de.
‫Bu yüzden bir hata aldım. Az önce ne oldu burada?
‫Tamam. İlk ikisi güvenli bir şekilde silindi.
‫Üçüncüsünde, güvenlik önlemi olduğu için çalışan bir konteyneri çıkaramayacağımı söylüyor.
‫Halen çalışmakta olan asıl süreci yanlışlıkla kaldırmadığınızdan emin olmanızı sağlar. Eğer bir docker container ls yaparsanız
‫hala çalışan bir tane olduğunu göreceksiniz.
‫Artık bir docker konteyner durdurma işlemi yaparak önce durdurabilir ve sonra kaldırabilirim.
‫Ama aslında force ve 63f için bir docker container rm -f yapacağım. Ve işte başlıyoruz.
‫Şimdi bir docker container ls -a yaparsam orada hiçbir şey olmadığını göreceksiniz.
‫Şimdi pisliğimizi temizledik.
‫TAMAM.
‫Böylece sadece birkaç dakika içinde 80 numaralı bağlantı noktasını dinleyen varsayılan yapılandırmaya sahip bir Nginx web
‫sunucusunu indirmek ve çalıştırmak için tek bir komut kullanabildik ve ardından bunlardan birkaç tane oluşturabildik, günlüklerle oynayabildik
‫ve ardından yaptıklarımızı temizlemek için kapsayıcıları kaldırabildik.