‫Merhaba.
‫Bu videonun iki nedeni var.
‫Birincisi, Docker'ı yerel olarak çalıştırmak istememeniz durumunda.
‫Docker'ı bir sunucuda uzaktan çalıştırmak istiyorsunuz, ister üretim için olsun, ister başka bir sunucu kullanımı için
‫olsun veya sadece performans kaynaklarını lisanslamak için Docker'ı yerel olarak çalıştıramadığınız için, yerel yönetici olmadığınızı
‫biliyorsunuz.
‫Her türlü sebep olabilir.
‫Yani bu Linux sunucuları için Docker motoru hakkında.
‫Motor ve sunucular dememin nedeni, bu video boyunca ele alacağımız temel bileşenlerdir.
‫Bu video, varsayılan Linux paket yöneticilerinizden farklı olarak, doğru konumdan en
‫güncel Docker yüklemesine odaklanacaktır.
‫Daha sonra kaynağın, onu çalıştıracağınız her yerde kurulu olduğundan emin olacağız, böylece tüm zaman
‫boyunca sunucuya ssh girmeyeceksiniz.
‫Aslında onu uzaktan kontrol edebilmek için kuracağız, bir Linux sunucusunda bir Docker motoru
‫çalıştırmanın en iyi yolu nedir?
‫Ve küçük bir uyarı, eğer Linux masaüstleri için Docker masaüstü hakkında olan
‫bir önceki videoyu izlemediyseniz, bu o değil.
‫Bu, Docker masaüstümüz olmadan önceydi, sadece Docker motorumuz vardı.
‫Her Docker masaüstünün içinde Docker motoru vardır.
‫Sizin için yönetir, ancak Docker motoru, Docker D veya Docker Daemon adı verilen tek bir ikili dosyadır ve herhangi
‫bir Linux sunucusunda çalışabilir.
‫Bir Linux çekirdeğiniz olduğu sürece, aynı şeyi çalıştırabilirsiniz.
‫Bir Windows Sunucusunda çalıştırabilirsiniz, Docker RD ESXi aslında Windows Konteynerlerini çalıştırmak için bir Windows sunucusunda bir
‫hizmet olarak çalışabilir.
‫Ancak bu videoda bundan bahsetmeyeceğiz.
‫Yani Docker masaüstü, yerel sisteminizde çalıştırmak içindir, bu gerçekten sadece Docker'ın yerel kullanımı
‫içindir.
‫Ancak bu Docker motoru, ister yerel ister uzak olsun, ister sanal makine ister fiziksel sunucu olsun,
‫ister Raspberry Pi olsun, herhangi bir Linux sisteminde çalışabilir.
‫Bir Linux çekirdeği çalıştırıyorsa, listede yer alır ve Docker'ın çalıştığını bildiği test edilmiş desteklenen yapıların
‫uyumlu bir listesi vardır.
‫Dışarıdaki her Linux dağıtımı değil.
‫Teknik olarak Linux olmayan BSD'yi içermez ve gerçekten sadece büyük olanlara odaklanır,
‫bilirsiniz, Orta Batı, Red Hat, Ubuntu, Debian, bu tür şeyler.
‫Ve destekleyeceği çeşitli mimariler var.
‫Bu videoda referans olarak, motor için şu anda desteklenen Linux dağıtımlarının listesini
‫gösteren bu sayfanın bağlantısını göreceksiniz.
‫Elbette Docker'ı en sevdiğim sunucu Linux dağıtımı olan Ubuntu'da kullanacağım ve size adım adım anlatacağım.
‫Ayrıntıları geçeceğim çünkü gerçekten sadece bunu okuyacak ya da daha sonra bahsedeceğimiz senaryoyu
‫çalıştıracaksınız.
‫Şimdi, evet, size bu videonun kaynakları olarak Linux varyantlarına, Ubuntu, Fedora gibi dağıtımlara
‫ve diğerlerine kurmanın tüm yollarıyla ilgili tüm belgeler için bağlantılar veriyorum.
‫Ancak çoğu zaman bunu yapmanın en kolay yolu sadece bir komut dosyası çalıştırmaktır.
‫Eğer tarayıcınıza yazarsanız, Docker olsun.
‫Bu size bakabileceğiniz, indirebileceğiniz ve otomatik olarak çalıştırabileceğiniz bir kabuk betiği verecektir.
‫Curl ile temel olarak doğru ayarları yapmanız ve eski şeyleri kaldırmanız, yeni şeyleri yüklemeniz, doğru kaynakları aldığınızdan
‫emin olmanız ve tüm bu şeyleri tek seferde yapmanız amaçlanmıştır.
‫Projenin başlangıcında Docker'ı öğrendiğimden beri hep bu şekilde
‫kurdum.
‫Bu nedenle, belki de Docker'ı bir Linux sunucusuna ilk kez kurduğunuzda, paket yöneticinizle
‫birlikte adım adım ilerleyen belgeleri takip edersiniz.
‫Belki apt, belki yum, belki de Linux dağıtımınızda ne yaptığınıza bağlı olarak APK.
‫Ama ben daha kolay olan bu betiği kullanacağım.
‫Temel olarak betiği bir dosyaya dönüştürür ve daha sonra bu dosyayı bir kabukla çalıştırır.
‫Son slayta giderseniz, bu komut dosyası size bunu kopyalayıp yapıştırmanızı, aşağıya kopyalamanızı ve ardından
‫çalıştırmanızı söyleyecektir.
‫Bunu yapıyoruz ve hangi dağıtımda olduğumu, bu dağıtımın hangi sürümünü kullandığımı, desteklenip
‫desteklenmediklerini anlayacak ve bu durumda apt'yi paket yöneticisine anahtarla bağlayarak doğru olanı aldığınızdan
‫emin olacak.
‫Yüklemeniz için depo ve ardından bu komut sunucunuzun ne kadar hızlı olduğuna bağlı olarak birkaç dakika çalışır.
‫Ve sonra Docker komut satırı, Docker motoru veya Daemon ve diğer birkaç yardımcı program ile
‫kabuk isteminize geri dönersiniz.
‫Genellikle görüntü oluşturmak için build kit, bunu çalıştırmak için compose gibi bazı eklentilerle birlikte gelir.
‫Kurs boyunca bunların hepsine değineceğiz.
‫Bu yüzden sisteminizde dört ya da beş ikili dosyanın dolaştığını fark edin.
‫Şimdi, Docker'ı yükleyebileceğiniz diğer tüm yollar gibi, bir Docker space version komutu verin,
‫bu komutu kabuğunuza yazın ve en azından komut satırı istemcisini ve sunucu sürümünü geri almanız gerekir.
‫Bu sunucu sürümünü geri aldığınızda, bu sunucudaki sunucu API'si ile konuşabileceğiniz anlamına gelir.
‫Sunucunun kabuğundaysanız, teknik olarak bir soket kullanarak yerel ana bilgisayarlarla konuşuyor demektir.
‫Sadece orada yaptığınız her şeyin açık kaynak olduğunu hatırlatmak istiyorum, Docker motoru,
‫Docker komut satırı, oradaki tüm eklentiler.
‫Bunların hepsi tamamen açık kaynak.
‫Apache lisanslı Docker masaüstü, ancak önceki videolardan tüm bu şeylerin yanı sıra Docker'ın
‫kapalı kaynak veya lisanslı yazılımlarını da içeriyor.
‫Docker masaüstü daha çok bir dizi farklı şeyin bir üst kümesidir.
‫Burada kurduğumuz Docker motoru sadece minimum düzeyde.
‫Docker'da bir konteyner çalıştırmak için ihtiyacınız olan daemon'dur.
‫Ve bir hatırlatma olarak, önceki videolarda yaptığım gibi, Docker login komutunu kullanırsanız, çünkü burada
‫yalnızca komut satırı erişiminiz var, Docker space, log in yazarsanız, Docker ID'nizle oturum
‫açabilirsiniz ve bu size daha fazla havuz sağlayacaktır.
‫Hatırlarsanız, havuzlar bu kurstaki ilk birkaç videoda yer alan ve yazılımı içeren şeylerdir.
‫İmajı çekersiniz ve ardından bir konteyner olarak çalıştırırsınız ve bunu belirli sayıda yaparsınız.
‫Ve Docker sonunda şikayet edebilir ve diyebilir ki, Hey, bak, aştın ve sanırım şu
‫anki sayı 106 saat gibi.
‫Havuz sayısını aştığınızı söylüyor.
‫Kurumsal bir güvenlik duvarının arkasındaysanız ve şirketinizdeki herkes Docker kullanıyorsa ve hepsi
‫tek bir IP adresinin arkasındaysa, bu sınıra oldukça hızlı bir şekilde ulaşılabilir.
‫Ancak sadece oturum açarsanız, Docker için ödeme yaparsanız Docker size ücretsiz hesapla hiçbir şey için en az iki kat daha fazla
‫çekme miktarı verir, ki bu kursla bunu yapmak zorunda değilsiniz, ancak Docker aboneliği
‫için Docker için ödeme yapmak isterseniz, sanırım bu hesapla oturum açtığınız sürece sınırsız havuza sahip
‫olursunuz.
‫Ama şimdi bu daemon'u yerel olarak kontrol etmeye geçelim.
‫Şimdi, burada olacak olan şey, kullanacağınız sistem ne olursa olsun, diyelim ki bu bir sunucu
‫kurulumu veya Docker'ı yerel makinenizde çalıştırmak istemiyor olabilirsiniz.
‫Belki buna izniniz yoktur, belki de yapamazsınız.
‫Belki de yeterli kaynağınız yoktur.
‫Belki de yerel makinenizde root değilsinizdir.
‫Ancak bu uzak makinede Docker'ı çalıştırma olanağına sahipsiniz.
‫Uzaktaki makinede kabuğa oturup tüm komutlarınızı orada yazmanız ve tüm kaynak kodu çalışmalarınızı
‫orada yapmanız veya bu kurs için repoyu klonlamanız gerekmez.
‫Orada hiçbir şey yapamazsın.
‫Bunu görmezden gelebilirsin.
‫Aslında Docker'ı oraya kurabilirsiniz ve biz onunla uzaktan konuşacağız.
‫Şimdi, bir saniye geriye gidelim.
‫Yıllar önce, bu SSH tünel özelliği 2018 civarında var olmadan önce, sunucuya ssh ile bağlanmanız ve her
‫şeyi sunucuda yapmanız gerekirdi ve bu bazen berbattır çünkü o zaman eşyalarınızı kopyalamanız
‫gerekir ve bu harika değildir.
‫Diğer her şeye yerel olarak sahipsiniz, kod düzenleyiciniz var, belki Visual Studio kodu kullanıyorsunuz
‫ve bu sınıf için kaynak kodunuz var ve burada bir şeyler var, değil mi?
‫Yani ideal olarak tüm bu işleri yerel makinenizde yapmak istersiniz.
‫Docker 2013 yılında ilk çıktığında bu sorunu çözmüştü.
‫Bunu yapabilmemizin tek yolu, yerleşik kimlik doğrulaması olmayan ve varsayılan olarak bağlantı için
‫şifreleme sağlamayan bir TCP bağlantı noktası kullanmaktı.
‫Bu yüzden Docker'a bağlanmak için genellikle kötü bir yol olarak görülüyordu.
‫Bu sadece güvenli ağlarda yapmak isteyeceğiniz bir şeydi ve özellikle de kimliği doğrulanmadığı için.
‫Bu bağlantı noktasına erişimi olan herhangi bir yerden bağlanırsanız, teknik olarak bir sunucuya uzaktan kök
‫erişimine izin verebilir, bu kötü bir fikirdir.
‫Docker daha sonra bu sunucuya SSH yapabildiğiniz ve tercihen bu sunucuya SSH yapmak için kimlik doğrulama veya
‫sertifikaya sahip olduğunuz sürece şeffaf bir SSH bağlantısı yapabileceğimiz bu yeni özelliği
‫ekledi.
‫Bunu yapabilirsiniz ve çemberlerden atlamanız veya herhangi bir ek bağlantı noktasını açığa çıkarmanız gerekmez.
‫Yani yapacağımız şey bu.
‫Buradaki adım, Docker komut satırı istemcisini hangi sistemde çalışacaksanız o sisteme yüklemektir
‫ve bu Windows, Mac, Linux, Raspberry, PI ya da başka bir sistem olabilir.
‫Mac kullanıyorsanız komut satırı istemcisini edinin.
‫Şaşırtıcı bir şekilde, brew yükleyicisini bilmiyorsanız, Mac için en iyi yükleyiciyi kaçırıyorsunuz
‫ve Brew Docker'ı yüklüyor, Docker motorunun tamamını veya Docker masaüstünü gerçekten yüklemiyor.
‫İstemciyi sadece onlar olduğu için yükler.
‫Mac için Docker motoru yok.
‫Mac çekirdekleri kapsayıcıları desteklemez, bu nedenle kurulum şaşırtıcı bir şekilde yalnızca komut satırını yükler, bu durumda bizim
‫istediğimiz de budur.
‫Yerel makineniz Linux ise, Dockers dokümantasyonundaki Linux yükleme paketini
‫kullanabilir ve bu paketi bir depo olarak ayarladıktan sonra, Docker CCI paketini bu depodan apt
‫ile yükleyebilirsiniz.
‫Ve son olarak, eğer Windows kullanıyorsanız, Chocolaty'yi duymuş olabilirsiniz.
‫Bugünlerde Windows için paket yöneticilerinden biri.
‫Ve sadece komut satırı istemcisini yüklemek için bir chocolatey yüklemesi yapabilirsiniz.
‫Ancak Docker, işletim sisteminiz için istemci kitaplıklarını ve yalnızca istemci kitaplığını nasıl
‫edinebileceğinizi anlattıkları belgelerinde tüm bunları açıklamaktadır.
‫Tamam.
‫Doğruluk anı.
‫Docker motorunu bir Linux sunucusuna yüklediniz.
‫Ne için kullanacağınızdan bağımsız olarak, ister sadece pratik yapmak için ister gerçek
‫üretim için olsun, sunucuda Docker'ınız var, artık Güney'de, yerel makinenizde istemciniz var.
‫İstemciyi kurmakla ilgili anlattığım tüm bu şeylerin, Docker masaüstü zaten yüklüyse, bunu
‫yapmanıza gerek olmadığını hatırlatmalıyım.
‫Docker masaüstü istemciyle birlikte gelir, ancak istemciye sunucu motoruyla konuşmak için nereye işaret edeceğini söyleyebiliriz
‫ve şimdi yapacağımız şey budur.
‫Yani bir sunucuya şuradaki komut gibi bir şeyle, bir IP adresine veya bir ana bilgisayar adına ssh route diyebileceğimi
‫hayal edin.
‫Ve diyelim ki bir SSH sertifikam var.
‫Yani tüm bunlar SSH'ın temellerini anladığınızı, uzaktan oturum açabilmek için bir sunucuda nasıl sertifika
‫alacağınızı bildiğinizi varsayar.
‫Bu konuda tonlarca eğitim var ve bu bilgi varsayılıyor.
‫Docker ile çalışmaya başlamadan önce yine temel Linux bilgisine sahip olmanız gerekir.
‫Bunu yapabileceğimizi varsayarsak, eğer bu erişime sahipsem, o zaman tek yapmam gereken bir ortam değişkeni oluşturmak
‫olacaktır.
‫Docker underscore host ortam değişkeni, Docker komut satırına varsayılan olarak hangi sunucuyla konuşacağını
‫söyler.
‫Docker'ı bir şeye kurar ve komut satırını kullanmaya başlarsanız, yerel soketi veya yerel ana bilgisayarı
‫varsayar.
‫Ve bu yüzden bu ortam değişkenine bile sahip değildir.
‫Ve varsayılan olarak, bu ortam değişkeni boşsa, Docker aramaya çalışsa ve bir tane bulamasa
‫bile, tamam, yerel ana bilgisayarla konuşmam gerektiğini varsaymalısınız diyecek ve bunu
‫gayet iyi yapacaktır.
‫Ancak bunu bir export docker host equals ssh colon slash slash ekleyerek değiştirirsek, tıpkı https URL'sinde
‫kullanacağınız gibi.
‫Yani eğer bunu hostname'de ssh iki nokta üst üste eğik çizgi kullanıcı adı ile değiştirirsek, o zaman sadece normal docker komutlarını yazarak
‫docker ile atlayabilirim.
‫Burada docker sürümü yazdığıma dikkat edin, ancak yerel makinemde Docker çalışmıyor.
‫Docker istemcisine sahibim ve birkaç dakika önce kurduğum bu uzak bulut örneğine internet üzerinden SSH
‫ile bağlanıyor ve sunucu sürümünün yanı sıra istemci sürümünü de döndürüyor.
‫Etrafı kurcalamaya başlarsanız, aslında istemcim için Mac OS olan Darwin'de olduğumu görürsünüz
‫ve sunucuyu aşağı kaydırırsak Linux'u gösteririz çünkü sunucunun motoru çalıştırdığı yer
‫burasıdır ve hepsi bu.
‫Tek yapman gereken bu.
‫Docker alt çizgi ana bilgisayar ortam değişkeninin ayarını kaldırmak isterseniz, Docker komut satırınız, motoru yerel
‫olarak çalıştırdığınızı ve ileri geri geçiş yapabileceğinizi varsayarak yerel makinenize
‫geri döner.
‫Aslında, bir sürü farklı sunucunuz olabilir ve hangi sunucuyla konuşacağını söylemek için kullandığınız
‫her kabuktaki ortam değişkenini değiştirebilirsiniz.
‫Bunu yapabilen bir Docker bağlam komutu da vardır.
‫Bu konuda henüz konuşmayacağız.
‫Bu, kursun ilerleyen kısımları için daha ileri düzey bir konudur, ancak teknik olarak bu ayarları kaydetmenize
‫ve konuşmak istediğiniz farklı motorların bir listesini yönetmenize olanak tanıyan Docker context adlı yerleşik bir komut vardır.
‫Ancak bununla başlamak harika ve buradaki son adım, bu kurs için deponuzu yerel olarak klonlamaktır, yazılı
‫derslerde birkaç derste bahsedilen, indirdiğiniz kurs deposunun bulunduğu, bunu kod düzenleyiciniz
‫ve diğer her şey ve Docker istemcinizle birlikte yerel makinenize koymak
‫istersiniz.
‫Sunucuda bulunacak tek şey yüklediğimiz motor olacak ve sürekli olarak ona ssh
‫göndermemiz gerekmeyecek çünkü yerel olarak çalıştırdığımız tüm Docker komutları sadece bu uzak sunucuya
‫karşı çalışacak.
‫Şu uzak sunucu.
‫Bu arada, Docker'da bir şeyleri test etmek için tarayıcımda yerel ana bilgisayar yazdığımda, örneğin Docker'da çalıştırdığımız
‫bir web sitesi veya bir şey gibi, yerel ana bilgisayar yazmayacağınızı, Docker'ı yüklediğiniz
‫sunucu ana bilgisayar adını veya IP adresini yazacağınızı unutmayın.
‫Bu, motoru çalıştıran, konteynerlerinizi çalıştıran ve tarayıcınıza yazmanız gereken
‫makinedir.
‫Ya da curl veya ping gibi başka yerel komutlar çalıştırıyorsanız, bunları bu sunucu IP'sine yapmanız
‫gerekecektir ve hepsi bu kadar.
‫Artık dünyanın herhangi bir yerindeki bir Linux sunucusunda çalışan bir motorunuz var.
‫Kodunuz, deponuz ve diğer her şeyle birlikte yerel sisteminizde çalışıyorsunuz ve başlamaya
‫hazırsınız.