Published

Docker Notlarım (1) 🐬

Yazar
  • avatar
    İsim
    Elif Nur Karakoç

Docker, developerlar ve sistemciler için geliştirilen açık kaynaklı bir sanallaştırma platformudur.

Neden docker kullanmalıyız?

  • Uygulamalarımızın kütüphane ve bağımlılıklarının birbirini etkilememesi için yani örneğin: Web Server’ın(Express) ve Frontend uygulamasının(React veya Vue App) bağımlılıklarında oluşabilcek farklılıkları engellemek için,
  • Tüm servisler uyumlu işletim sistemine sahip olması durumunu ortadan kaldırmak için,
  • Servis güncellemlerinde ortaya çıkan ihtiyaçların örneğin bağımlılıkların güncellenmesi gibi durumları ortadan kaldırmak için.
  • Zaman maliyetinin önüne geçmek için.
  • Development, test, production ortamlarının aynı olması için

docker kullanmalıyız.

Container, her bir uygulama özelinde uygulamaların kütüphane ve bağımlılıklarının olduğu ve başka bir servisi etkilemeyeceği izole bir ortam oluşturmamızı sağlar. Containerların kendilerine ait processleri, servisleri ve ağ(network)’ü vardır. Aynı işletim sistemi veya VM üzerinde çalışır.

Containerlar VM’e benziyor ama ikisinin arasındaki fark var.

  • Containerlar işletim sisteminin Kernel’ını paylaşırlar.
  • VM’lerde ise işletim sistemi vardır.
  • Containerlar: düşük RAM kullanımı, düşük CPU kullanımı ve daha az alana ihtiyacı olması
  • VM’ler yüksek RAM kullanımı, yüksek CPU kullanımı, daha fazla alana ihtiyacı olması

Containerlar 10 yıldan fazla süredir var. Container türleri: LXC, LXD, LXCFS. Docker LXC container türünü kullanmaktadır.

Container yönetimi oldukça zor ve low level bir iştir. Docker bu işi kolaylaştırmak için high level bir çok araç bize sunuyor. Containerlar işetim sistemlerinin kernellarını kullanırlar.

Docker ise işletim sistemimiz ve containerlar arasında iletişim kurmayı sağlar.

Image: içerisinde bir çok farklı yapıyı barındıran yapılardır. Örnek: OS, Application vs. Containerın hangi çıktıyı vericeğini planlayan söyleyen yapıya diyoruz. Bu imageler docker hub üzerinde bulunuyor.

Docker hubdan image almak/indirmek için örnek:

docker pull imageName

// node
docker pull node

Container: Image’i çalıştırdığımızda elde ettiğimiz proses olarak düşünülebilir. Bir Imageden bir sürü container çalıştırabiliriz. Her biri ayrı bir prosestir.

Herhangi bir image’i çalıştırmak, container üretmek için aşağıdaki komutu kullanıyoruz:

docker run imageName
  • run komutu eğer image localde yok ise docker hub dan indiriyor.

İndirilen imagelerin listesini görmek için:

docker images
  • Her bir image’in kendisine ait unique bir id’si var.

Ubuntu containerı üretip içine girmek için :

docker run -it ubuntu
  • it: interaktif terminal
  • container adı her zaman en sonda olur.

container’a isim vermek için:

docker run -it --name container_name ubuntu

isimlendirilmiş bir containerı çalıştırmak ve durdurmak için:

docker start container_name
docker stop container_name
  • container id ile de containerları başlatıp durdurabiliriz.

Ayakta olan containerları görmek için:

docker ps

Geçmişte çalışmış tüm dockerları listelemek için:

docker ps -a

Aktif containerların listesini görmek için:

docker container ls

Aktif olan ve aktif olmayan containerları görmek için:

docker container ls -a

Aktif olmayan containerları silmek için:

docker rm container_id
docker rm container_name

Containerların tamamını silmek için:

docker container rm $(docker container ls -aq)

Notlarımın devamını başka bir yazı ile paylaşacağım 😊

Okuduğun için teşekkürer 💐

Kaynakça

Elif