Docker Nedir? Nasıl Kullanılır?

 Docker sanallaştırma teknolojisinin bizlere sunduğu bir yapıdır. Sanal makine kullanımında bir çok dezavantajı gideren yenib bir yapı diyebiliriz.

Bu avantajlardan bazıları:

  •  Daha hızlı
  • Az hafıza
  • Başlatma durdurma daha kolay vb.

Sisteminizde docker teknolojisini kullanmak için;

1-Docker kurulumu

sudo apt-get update

sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release

sudo apt-get remove docker docker-engine docker.io containerd runc

2-Kurulu olduğu test edilmeli
docker version

3-DockerFile dosyası oluşturma

Aşağıda gimp programını kurup çalıştıran bir Dockerfile dosyasının içeriği:

FROM ubuntu:latest
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y gimp
CMD "gimp"

Kendi oluşturduğum deb paketi için

FROM ubuntu
ENV DEBIAN_FRONTEND=noninteractive
ADD e-ag.deb /home
RUN apt-get update && dpkg --force-all -i /home/e-ag.deb && rm /home/e-ag.deb && \
apt-get install -f -y
CMD "e-ag"

4-İmaj oluşturulur
Dockerfile dosyanın olduğu dizinde 
docker build . -t gimp:0.1 komut çalıştırılarak sanal konteyner oluşturulur
0.1: tag bilgisi sürüm gibi düşünülebilir 

5-İmaj çalıştırılır
docker run -it --name gimp gimp:0.1
i:interactive :etkileşim
t:tag:versiyonlama
d:deactive:arka planda çalışması için kullanılan parametre

Eğer kullandığımız sistem grafik uygulaması içermiyorsa yukarıdaki adımlar yeterli olacaktır. Fakat bu uygulama grafik uygulaması olduğu için son adım şöyle olmalıdır.

xhost +

sudo docker run --rm -it --name gimp -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix gimp:0.1


Bazı komutlar:
Sistemde oluşan imajlar listelenir
docker images

Sistemde oluşan imajlar çalıştırılır
docker run -it gimp

Kendi oluşturduğumuz deb paketini Dockerfile dosyasının olduğu yere koyarak Dockerfile içine aşağıdaki satırları ekleyip harici deb dosyalarını kurabiliriz.

ADD example.deb /home 
RUN dpkg -i /home/example.deb && rm /home/example.deb

Can't load shared library libQt5Core.so.5
Paylaşılan kitaplık libQt5Core.so.5 yüklenemiyor
RUN strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
https://stackoverflow.com/questions/65562640/problems-with-dynamic-library-in-docker-container

Docker Acessing ARP table of Host from Docker container
Kapsayıcısından Host'un ARP tablosuna erişme
docker run -v /proc/net/arp:/proc/net/arp komut hata veriyor
Sorunun çözümü:
docker run --net host --privileged -v /proc/net/arp:/host/arp alpine cat /host/arp
 
https://stackoverflow.com/questions/58141091/acessing-arp-table-of-host-from-docker-container
 
e-ag yazılımımı çalıştırmak için kullandığım komut satırı:
 
sudo docker run --net host --privileged --rm -it --name mydn -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v /proc/net/arp:/root/arp -p 9787:7879 -p 21:21 -p 22:22 -p 5900:5900 mydn
 
Docker için gerekli komutlar;

Container ları Listeleme
docker ps 
 
İmajları Listeleme
sudo docker images
 
Tüm Çalışan veya Çalışmayan Container ları Listeleme(-a: all )
docker ps -a 

Container'ı Durdurmak için;
docker stop <CONTAINER_ID>
docker stop cc456abc456
docker stop $(docker ps -a -q)  tüm Container'ı durdurur.
 
İmajları Silme
sudo docker image rm image_id
sudo docker image rm 6b30eb3d7683

Tüm İmajları Silme
docker rmi $(docker images -q)

Container'ı Silme;
docker rm <CONTAINER_ID>" komutu çalıştırılmalıdır.
docker rm cc456abc456 
docker rm $(docker ps -a -q) tüm Container'ı siler.

Kurulum için;
https://docs.docker.com/engine/install/debian/
Statik kurulum için;
https://docs.docker.com/engine/install/binaries/



Yorumlar