Giriş
Docker uygulamaları konteynerlerde çalıştırmayı ve yönetmeyi kolaylaştıran bir platformdur. Uygulamalarınızı altyapınızdan ayırmanın bir yolunu sunar. Konteynerler sanal makinelere çok benzer, ancak daha taşınabilir, verimli ve kullanımı kolaydır. Docker'ı Linux dağıtımlarına kurmanın çeşitli yolları vardır. Mevcut işletim sistemine Docker kurmanın en popüler ve kolay yolu yum komutlarını kullanmaktır.
Bu eğitim, Docker'ı CentOS 7 üzerinde birkaç basit adımda nasıl kurup kullanabileceğinizi gösterecektir.
Gereksinimler:
- 64-bit CentOS 7 Örneği.
- Sudo yetkilerine sahip root olmayan bir kullanıcı.
Bu eğitim boyunca çalıştırdığınız tüm komutlar root olmayan bir kullanıcı olarak çalıştırılır ve gerekirse sudo anahtar kelimesi kullanılarak root erişimi sağlanacaktır.
Adım 1: CentOS 7 Örneğinde Docker Kurulumu
Resmi CentOS 7 deposu Docker için en son kurulum paketine sahip olmayabilir. Bu bölümde, Docker’ın en son sürümünü resmi Docker deposundan kuracaksınız. İlk olarak, paket veritabanını şu komutla güncellemeniz gerekir:
|
1 |
sudo yum check-update |
Güncelleme adımı tamamlandıktan sonra, Docker’ın en son sürümünü indirip kurmak için aşağıdaki komutu çalıştırın:
|
1 |
curl -fsSL https://get.docker.com/ | sh |
Docker artık kuruldu, bu nedenle aşağıdaki komutu çalıştırarak Docker daemon’ını başlatabilirsiniz:
|
1 |
sudo systemctl start docker |
Docker daemon’ının çalışıp çalışmadığını doğrulamak için aşağıdakini yazın:
|
1 |
sudo systemctl status docker |
systemctl status komutunun çıktısı, çalıştığını gösteren ve aşağıda paylaşılan çıktıya benzer olmalıdır:
|
1 2 3 4 5 6 |
Çıktı: ● docker.service - Docker Application Container Engine Yüklendi: yüklendi (/usr/lib/systemd/system/docker.service; devre dışı; üretici varsayılanı: devre dışı) Aktif: aktif (çalışıyor) itibaren Çar 2021-02-17 18:22:06 UTC; 10sn önce Belgeler: https://docs.docker.com Ana PID: 21884 (dockerd) |
Son olarak, makinenizi yeniden başlattığınızda Docker’ın başladığından emin olmak için şu komutu kullanın:
|
1 |
sudo systemctl enable docker |
Docker kurulumu size Docker servisinin yanı sıra istemci aracını da (Docker komut satırı istemcisi) sağlar. Eğitimin sonraki bölümlerinde, Docker komutlarını kullanarak daha fazla pratik yapabileceksiniz.
Adım 2: Sudo Öneki Olmadan Docker Komutlarını Kullanma
Docker komutlarının çalışması için root yetkilerine ihtiyacı vardır. Bu nedenle, komutları çalıştırmak istiyorsanız başlarına sudo eklemeniz gerekir. Kurulum sırasında varsayılan olarak bir Docker grubu oluşturulur. Gruba bir kullanıcı eklerseniz, Docker komutlarını sudo olmadan çalıştırabilirsiniz. Docker komutlarını sudo olmadan çalıştırmayı denemek veya kullanıcıyı gruba eklememek, aşağıdakine benzer bir çıktı ile sonuçlanacaktır:
|
1 2 3 |
Çıktı: docker: Bağlanılamıyor bağlanmak şuna ilgili Docker daemon. Mı ilgili docker daemon çalışıyor üzerinde bu ana makine?. Bkz 'docker run --help'. |
Kullanıcı adınızı Docker grubuna eklemek, Docker komutlarını çalıştırmak için sudo kullanmak zorunda kalmamanızı sağlayacaktır:
|
1 |
sudo usermod -aG docker $(whoami) |
Docker grubuna başka bir kullanıcı eklemek için komuttaki kullanıcı adını değiştirmeniz yeterlidir:
|
1 |
sudo usermod -aG docker username |
Bu kılavuzun geri kalanında, tüm komutların Docker kullanıcı grubundaki bir kullanıcı tarafından çalıştırıldığını varsayacağız. Durum böyle değilse, komutlarla birlikte sudo önekini kullanabilirsiniz.
Adım 3: Docker Komutlarını Çalıştırma
Artık Docker'ı kurup çalıştırdığınıza göre, Docker komut satırı aracına aşina olmak için bazı komutlara göz atalım. Docker komutları genellikle şu şekildedir:
|
1 |
docker [seçenek] [komut] [argümanlar] |
Mevcut tüm alt komutları bulmak için şunu kullanmalısınız:
|
1 |
docker |
İtibarıyla Docker 20.10.3, kullanılabilir alt komutların tam listesi şunları içerir:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
Çıktı: attach Yerel standart girdi, çıktı, ve, hata akışlarını çalışan bir konteynere bağlayıncontainer build Bir imaj oluşturun, kaynak: bir Dockerfile commit Yeni bir imaj oluşturun bir konteynerin değişikliklerinden's changes cp Bir konteyner ile yerel dosya sistemi arasında dosya/klasör kopyalayın create Yeni bir konteyner oluşturun diff Bir konteynerin dosya sistemindeki dosya veya dizin değişikliklerini inceleyin events Gerçek zamanlı olayları alın, kaynak: the sunucu exec Çalışan bir konteynerde bir komut çalıştırıncontainer export Dışa aktarın: bir 'konteynerin dosya sistemini bir tar arşivi olarak history Bir imajın geçmişini gösterinan image images İmajları listeleyin import Bir dosya sistemi imajı oluşturmak için tarball içeriğini içe aktarın filesystem image info Sistem genelindeki -bilgileri görüntüleyin inspect Düşük seviyeli -bilgileri döndürün, hedef: Docker nesneleri kill Bir veya daha fazla çalışan konteyneri durdurun (öldürün) load Bir imaj yükleyin, kaynak: bir tar arşivi veya STDIN login Bir Docker kayıt defterine Docker giriş yapın logout Bir Docker kayıt defterinden Docker çıkış yapın logs Bir konteynerin günlüklerini getirin a container pause Bir veya daha fazla konteyner içindeki tüm işlemleri duraklatınkonteynerler port Listele port eşlemelerini veya bir belirli eşlemeyi için the konteyner ps Listele konteynerleri pull Çek bir imaj veya bir depo şuradan: bir kayıt defteri push Gönder bir imaj veya bir depo şuraya: bir kayıt defteri rename Yeniden adlandır bir konteyner restart Yeniden başlat bir veya daha fazla konteyner rm Kaldır bir veya daha fazla konteyner rmi Kaldır bir veya daha fazla imaj run Çalıştır bir komut içinde bir yeni konteyner save Kaydet bir veya daha fazla imaj şuraya: bir tar arşivi (akıtılan şuraya: STDOUT tarafından varsayılan) search Ara the Docker Hub için imajlar start Başlat bir veya daha fazla durdurulmuş konteyner stats Görüntüle bir canlı akış of konteyner(lerin) kaynak kullanım istatistikleri stop Durdur bir veya daha fazla çalışan konteyner tag Oluştur bir etiket TARGET_IMAGE olan atıfta bulunan şuraya: SOURCE_IMAGE top Görüntüle the çalışan süreçleri of bir konteynerin unpause Duraklatmayı kaldır tüm süreçleri içindeki bir veya daha fazla konteyner update Güncelle yapılandırma of bir veya daha fazla konteyner version Göster the Docker sürüm bilgisi wait Engelle kadar bir veya daha fazla konteyner durana, sonra yazdır onların çıkış kodlarını |
Belirli bir komut hakkında daha fazla bilgi edinmek için –help bayrağını kullanabilirsiniz:
|
1 |
docker subcommand --help |
Sistem hakkında detaylı bilgi almak için şunu kullanın:
|
1 |
docker info |
Adım 4: Docker İmajları ile Çalışmak
Docker imajları, Docker konteynerleri için bir şablon (blueprint) olarak adlandırılabilir. Bu imajlar genellikle şuradan çekilir: Docker Hub, Docker projesi tarafından yönetilen bir kayıt defteridir (registry). Herkes Docker Hub üzerinde kendi imajlarını oluşturabilir ve yayınlayabilir. Sonuç olarak, kayıt defterinde çok çeşitli uygulamaları ve işletim sistemi dağıtımlarını kolayca bulabilirsiniz. Docker Hub'a erişimi onaylayacak basit bir programı deneyelim:
|
1 |
docker run hello-world |
Docker'ın çalıştığını gösteren aşağıdaki gibi bir çıktı almalısınız:
|
1 2 3 4 |
Çıktı: Merhaba -den Docker! Bu mesaj gösteriyor ki sizin kurulumunuz görünüyor to olduğu çalışıyor doğru şekilde. ... |
Arama komutunu kullanarak Docker Hub üzerinde çeşitli Docker imajları bulabilirsiniz. Örneğin, bir CentOS imajı aramak için aşağıdaki komuta bakın:
|
1 |
docker search centos |
Arama sorgusu, alt dizeyle eşleşen tüm imajların bir listesini gösterecektir. Sizin durumunuzda çıktı şu şekilde olmalıdır:
|
1 2 3 4 5 6 7 8 |
Çıktı: İSİM AÇIKLAMA YILDIZLAR RESMİ OTOMATİKLEŞTİRİLMİŞ centos The resmi sürümü of CentOS. 6410 [OK] ansible/centos7-ansible Ansible üzerinde Centos7 132 [OK] consol/centos-xfce-vnc Centos konteyneri ile "headless" VNC oturumu… 125 [OK] jdeathe/centos-ssh OpenSSH / Supervisor / EPEL/IUS/SCL Depoları… 117 [OK] centos/systemd systemd etkinleştirilmiş temel konteyner. 96 [OK] ... |
Arama sonuçlarında, imaj hakkında bilgi veren farklı sütunlar bulunur. OFFICIAL sütunundaki OK, imajın uygulamanın arkasındaki şirket tarafından oluşturulduğunu ve desteklendiğini belirtir. İmaja karar verdikten sonra, Docker pull komutunu kullanarak yerel makinenize indirebilirsiniz:
|
1 |
docker pull centos |
İmajı indirdikten sonra, Docker run komutunu kullanarak konteyneri çalıştırabilirsiniz. Bir imajı önceden indirmeden doğrudan çalıştırmayı denerseniz, Docker önce imajı indirecek ve ardından konteyneri çalıştıracaktır:
|
1 |
docker run centos |
Aşağıdaki komutu kullanarak yerel makinenize indirilmiş olan imajları listeleyebilirsiniz:
|
1 |
docker images |
Şuna benzer bir çıktı almalısınız:
|
1 2 3 4 |
Çıktı: REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 300e315adb2f 2 ay önce 209MB hello-world latest bf756fb1ae65 13 ay önce 13.3kB |
Bu kılavuzun ilerleyen kısımlarında, konteynerleri çalıştırmak için imajları değiştirebileceksiniz. Bu yeni imajlar, Docker Hub'a ve Docker imajlarını barındıran diğer kayıt defterlerine eklenebilir veya gönderilebilir.
Adım 5: Bir Konteyneri Etkileşimli Olarak Çalıştırma
Farklı konteyner türleri vardır. Step4 adımında çalıştırdığınız hello-world konteyneri, bir mesaj yazdırdıktan sonra çalışan ve çıkan bir konteyner türüdür. Diğer bir konteyner türü ise etkileşimli olanıdır. Etkileşimli konteynerleri sanal bir makineye benzer şekilde kullanabilirsiniz.
En son CentOS imajından bir konteyner oluşturalım. Docker run komutunda -i ve -t bayraklarını kullanmak, CentOS konteynerine etkileşimli erişim sağlayacaktır:
|
1 |
docker run -it centos |
Komut istemi değişecektir ve aşağıdaki çıktı gibi görünmelidir:
|
1 2 |
Çıktı: [root@3ce69d2a35b9 /]# |
|
1 |
Not: The konteyner kimliği görüntülenen içinde the komut istemi is benzersizdir ve o will gelecektir in kullanışlı sonrasında , içinde the örnek o is 3ce69d2a35b9. |
Artık çalıştıracağınız her komut konteynerin içinde çalışacaktır. Bu, sanal bir makinede komut çalıştırmaya benzer. CentOS konteynerine MySQL sunucusu kurmayı deneyelim. Bunu şununla yapabilirsiniz:
|
1 |
yum install mysql |
Adım 6: Bir Konteynerdeki Değişiklikleri Docker İmajına Kaydetme (Commit)
Konteyneri başlattıktan sonra, benzer bir sanal makinede yapılabilen dosya oluşturma/değiştirme veya bir uygulama kurma gibi tüm işlemleri yapabilirsiniz. Lütfen bu değişikliklerin yalnızca o konteyner için geçerli kalacağını ve konteyneri yok ettikten sonra yaptığınız değişikliklerin kaybolacağını unutmayın.
Eğitimin bu bölümünde, yaptığınız değişikliklerle bir konteynerden nasıl yeni bir Docker imajı oluşturacağınızı öğreneceksiniz. Sonrasında Step5 MySQL sunucusu kurulu olarak çalışan bir CentOS konteynerine sahip olursunuz. Bu konteyner artık sade CentOS imajından farklıdır. Konteynerin bu durumunu daha sonra kullanmak üzere kaydedebilirsiniz. İlk olarak, şu komutu kullanarak konteynerden çıkmanız gerekir:
|
1 |
exit |
Aşağıdaki komutu kullanarak konteynerde yaptığınız değişiklikleri yeni bir Docker imajına kaydedin (commit):
|
1 |
docker commit -m "Changes done to the image" -a "Author Name" container-id repository/new_image_name |
Komutta, -m commit mesajını ifade eder ve temel olarak yapılan değişiklikleri belirtmelidir, -a etiketi ise yazarı belirtmek için kullanılır. Container-id, şuradan alınan kimliktir: Step5, bunu konteyneri etkileşimli modda çalıştırdıktan sonra elde ettiniz ve genellikle repository, Docker Hub kullanıcı adınızdır. Örneğin:
|
1 |
docker commit -m "added mysql-server" -a "CloudSigma" 59839a1b7de2 finid/centos-mariadb |
|
1 |
Not: Sonra the yeni imaj is kaydedildikten o is kaydedilir on sizin sisteminizde. İçinde the sonraki aşamalarda of bu eğitimin, siz will öğreneceksiniz nasıl to göndereceğinizi bir imajı to Docker Hub’a ve in the benzer kayıt defterlerine which barındıran docker imajlarını. Bir kez sizin imajınız is gönderildiğinde to the kayıt defterine, o can be erişilebilir tarafından başkaları da well. |
İmaj kaydedildiğine göre, Docker images komutu eski imajların yanı sıra yeni imajı da listelemelidir:
|
1 |
docker images |
Komutun çıktısı aşağıdakine benzer olmalıdır:
|
1 2 3 4 5 |
Çıktı: REPOSITORY TAG IMAGE ID CREATED SIZE cloudsigma23/centos-mysql latest 1b9368efea70 13 saniye önce 308MB centos latest 300e315adb2f 2 ay önce 209MB hello-world latest bf756fb1ae65 13 ay önce 13.3kB |
Örnekte görüldüğü gibi, Docker Hub'daki CentOS imajı kullanılarak yeni bir centos-mysql imajı oluşturulmuştur. Boyuttaki fark, bazı değişikliklerin yapıldığını gösterir. Bu örnekte, konteynere MySQL sunucusunun eklenmesiydi. Bir dahaki sefere MySQL sunuculu bir konteynere ihtiyacınız olduğunda, sadece yeni imajı çalıştırabilirsiniz ve işte! Önceden kurulmuş bir MySQL sunucusuyla çalışan bir CentOS konteynerine sahip olursunuz.
Adım 7: Docker Konteynerlerini Yönetme
Artık Docker’a aşina olduğunuza göre, bir süre kullandıktan sonra zaten çalışan ve bazı aktif olmayan konteynerleriniz olacaktır. Aktif konteynerlerin listesini almak için şunu kullanmalısınız:
|
1 |
docker ps |
Buna benzer bir çıktı görmelisiniz:
|
1 2 3 |
Çıktı: KONTEYNER ID İMAJ KOMUT OLUŞTURULDU DURUM PORTLAR ADLAR 604c889cf404 centos "/bin/bash" 20 dakika önce Ayakta 20 dakika intelligent_easley |
Hem aktif hem de aktif olmayan konteynerleri listelemek için komutla birlikte -a bayrağını kullanmalısınız:
|
1 |
docker ps -a |
Oluşturduğunuz son konteyneri bulmak için -l bayrağını belirtebilirsiniz:
|
1 |
docker ps -l |
Çalışan/aktif bir konteyneri durdurmak için basit bir komut çalıştırın:
|
1 |
docker stop konteyner-id |
Konteyner kimliğini (container-id) Docker ps komutunun çıktısında bulabilirsiniz.
Adım 8: İmajları Bir Depoda Yayınlama
Yeni imajı oluşturduktan sonraki adım, bunu arkadaşlarınızla paylaşmaktır. Docker Hub veya başka bir kayıt defteri kullanarak tüm dünyanın kullanımına da sunabilirsiniz. İmajı göndermeden önce ilgili kayıt defterine giriş yapmanız gerekir.
Kılavuzun bir sonraki bölümünde, imajları Docker Hub’a nasıl göndereceğinizi öğreneceksiniz. İlk olarak, Docker Hub’da kaydolun. Aşağıdaki komutu kullanarak imajınızı göndermek için Docker Hub’a giriş yapmanız gerekecektir:
|
1 |
docker login -u docker-kayıt defteri-kullanıcı adı |
Doğru şifreyi girdikten ve kimlik doğrulaması başarılı olduktan sonra imajınızı gönderebilirsiniz. İmajı göndermek için aşağıdaki komutu kullanın:
|
1 |
docker push docker-kayıt defteri-kullanıcı adı/docker-imaj-adı |
Komutun çıktısı şuna benzer olacaktır:
|
1 2 3 4 5 |
Çıktı: Gönderme işlemi gönderimi referans alıyor şu depoya: depo [docker.io/cloudsigma23/centos-mysql] ee30e80cbcc5: Gönderildi 2653d992f4ef: Bağlandı şuradan: library/centos ... |
İmajı gönderdikten sonra, aşağıdaki görselde gösterildiği gibi hesabınızın panelinde görünmelidir:

Benzer bir şekilde başarısızlık durumunda, giriş yapmamış olma ihtimaliniz yüksektir:
|
1 2 3 4 5 6 7 |
Çıktı: Gönderme işlemi gönderimi referans alıyor şu depoya: depo [docker.io/cloudsigma23/centos-mysql] ee30e80cbcc5: Katman zaten mevcut 2653d992f4ef: Katman zaten mevcut hatalar: reddedildi: talep edilen erişim yönelik kaynağa erişim talebi reddedildi yetkisiz: kimlik doğrulaması gerekli |
Giriş yapabilir ve gönderme işlemini tekrar deneyebilirsiniz.
Sonuç
Docker'dan yararlanabileceğiniz birçok yol vardır. Bu kılavuz, başlamanız için size yeterli bilgiyi sağlayacaktır. Docker gerçekten çok popüler bir proje olduğundan, kullanımı ve farklı kullanım senaryoları hakkında birçok detayı şuradan bulabilirsiniz: projenin blog sayfası.
Docker ile neler yapabileceğiniz hakkında daha fazla bilgi edinmek için diğer Docker kılavuzlarımıza da göz atabilirsiniz:
- Docker Kaynaklarını Temizleme – İmajlar, Konteynerler ve Birimler (Volumes)
- Docker Compose ile Laravel, Nginx ve MySQL Dağıtımı
- OpenVPN Access Server ile Docker Altında Kendi VPN Sunucunuzu Çalıştırın
Keyifli Çalışmalar!
Yorumlar
Henüz yorum yapılmamış. İlk siz olun.