Ana içeriğe geç

Docker Temel Komutlar

Dockeri sisteme indirmek

curl -sSL https://get.docker.com/ | sh
  • DOCKERİ GÜVENLİ BİR ŞEKİLDE TEST ETMEK İÇİN YENİ BİR KULLANICI ÜZERİNDEN BU İŞLEM YAPILIR.
useradd docker
  • KULLANICIMIZI DOCKER GRUBUNA ATIYORUZ. (ROOTKEN YAPILIR)
usermod -aG docker kullanıcı_adı

Docker aktif edilir

systemctl start docker
  • DOCKERİN ÇALIŞABİLİRLİĞİNİ KONTROL EDİNİZ.
systemctl status docker

Docker version kontrol

docker version
  • tüm detaylar o an çalışan konteynerler, bulunan imajlar vs
docker info

Docker bileşenlerini yüklemek (Brew ile yapacağımız kurulumlar yalnızca docker engine kurulumu gerçekleştirilir. Docker compose ve docker machine ayrı ayrı kurulur

brew install docker
  • OLUŞTURDUĞUMUZ YENİ KULLANICIDA SUDO İŞLEMİ YAPARKEN SUDOERS HATASINI ALABİLİRİZ. PROBLEM ÇÖZÜMÜ
sudo usermod -aG sudo,adm kullanıcı_adı

DOCKER COMPOSE VE DOCKER MACHİNE KURULUMU

apt-get install docker-machine
apt-get install docker-compose

  • DOCKER-MACHİNE KURULUMUNDA PAKET BULUNAMADI HATASI ALIYORSAN DOĞRUDAN KURULUM YAPABİLİRSİN

base=https://github.com/docker/machine/releases/download/v0.16.0 &&
curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
sudo mv /tmp/docker-machine /usr/local/bin/docker-machine &&
chmod +x /usr/local/bin/docker-machine

  • KONTROL;
docker-machine version

Dockerin yerel imaj deposu nerede?

/var/lib/docker/storage-driver

Docker imajlarını listeleyin

docker images
  • DOCKER CONTAİNER PRUNE İLE TÜM İMAJLAR SİLİNİR
docker container prune
  • DOCKER HUB ÜZERİNDE YER ALAN İMAJLAR "PULL" İLE SİSTEME ÇEKİLİR.

docker image pull tomcat
docker image pull mariadb
docker image pull nginx

  • BU KOMUTTA "ALPİNE" BÖLÜMÜ REPOSİTORY ADINI, : KARAKTERİNDEN SONRA GELEN TAG BÖLÜMÜDE İMAJA AİT VERSİYONU BELİRLER.
docker image pull alpine:latest
  • ÖRNEK CENTOS REPOSU ÜZERİNDEN LATEST ETİKETLİ İMAJ SİSTEME ÇEKİLİR.
docker image pull centos:latest

DEPO ADINDAN SONRA TAG VERİLMEZSE VARSAYILAN OLARAK LATEST KABUL EDİLECEK. YANİ GÜNCEL OLAN İMAJ KULLANILICAKTIR.

**BİR İMAJIN BÜTÜN VERSİYONLARI -a PARAMETRESİ İLE İNDİRİLEBİLİR. **

Konteyner hakkında detaylı bilgi

docker image inspect nginx

**BÜTÜN İMAJLAR BİR TEMEL KATMAN İLE BAŞLAR İMAJ ÜZERİNDE DEĞİŞİKLİKLER YAPILDIKÇA YENİ KATMANLAR, BU BAZ ALINAN KATMAN ÜZERİNDEN ZİNCİRLEME BİR ŞEKİLDE DEVAM EDER. BU DURUMU ÖRNEKLEYELİM; UBUNTU TABANLI YENİ BİR İMAJ OLUŞTURDUĞUMUZU DÜŞÜNELİM; BU İMAJINIZIN İLK KATMANI OLDU. İMAJA YENİ BİR NGİNX PAKETİ KURDUNUZ, İKİNCİ KATMAN OLUŞTU. ARDINDAN PYTHON PAKETİNİ KURDUNUZ VE SON OLARAK BİR FİREWALL KURALI OLUŞTURDUNUZ, SON DURUMDA İMAJINIZ DÖRT KATMANA SAHİP OLDU. **

İmaj silinmesi

docker rm  (konteyner)
docker rmi  (imaj)

ÇALIŞAN BİR KOYTEYNERE AİT İMAJ SİLİNEMEZ. İLK ÖNCE KONTEYNER DURDURULUR.

Sistemdeki imajların ID numaraları

docker image ls -q

Sistemdeki bütün imajların silinmesi

docker image rm $(docker image ls -q) -f

Tag eklenmemiş imajları silmek

docker images --filter "dangling=true"

Tag eklenmemiş bütün imajları silmek

docker rmi $(docker images -f "dangling=true" -q)

İmajlara etiket eklenmesi

  • LABEL version="v2.7" şeklinde tanımlama yaptığımız imajı --filter parametresiyle test edelim.

  • docker images --filter "label=version="v2.7"" girilir. ve bu etikete sahip olan imajlar karşımıza çıkar.

  • imajlara LABEL version="v1" renk="siyah" jim="moriarty" gibi etiketler eklenebilir.

  • docker inspect imaj_ismi komutu ile "Labels" kısmından mevcut etiket bilgilerine ulaşabiliriz.

  • DOCKER İMAGE HİSTORY KOMUTU HEDEF İMAJ ÜZERİNDEKİ DEĞİŞİKLİKLERİ BOYUT BİLGİSİ İLE BİRLİKTE GÖSTERİR.

docker image history imaj_ismi
  • DOCKER İMAGE TAG KOMUTU, KAYNAK BİR İMAJI YENİ BİR TAG İLE YEREL DEPODA OLUŞTURUR.

docker image tag varolan_imaj_adı oluşturulacak_imaj (docker image tag nginx:latest nginx:v1)
docker image ls | grep nginx ile sorgulama yapılır.

Docker save komutu iile imajları tar arşivi olarak indirmek, load ile tekrardan yüklenebilir

docker save nginx > nginxarsiv.tar
ls -sh nginxarsiv.tar (arsivi sorgulama)
docker load < nginxarsiv.tar
docker load --input nginxarsiv.tar
docker images | grep nginx

  • DOCKER İMAGE PRUNE, İMAJLARI KAYNAKLARI İLE BİRLİKTE SİSTEMDEN SİLER. SORUNSUZ KULLANIM İÇİN DOCKER CLİENT VE DOCKER DAEMON > 1.25 VERSİON
docker image prune -a

GENELLİKLE CRONTAB İLE BİRLİKTE GEÇMİŞE YÖNELİK KULLANILMAYAN İMAJLARIN SİLİNEREK DİSKTEN YER AÇILDIĞI SENARYOLARLA KARŞILAŞABİLİRİZ.

  • RMİ DE OLDUĞU GİBİ PRUNE İLE --FİLTER PARAMETRESİ BİRLİKTE KULLANILABİLİR.
docker image prune --filter "varl=key1"
  • UNTİL PARAMETRESİ, SAAT BAZINDA FİLTRELEME YAPILMASINI SAĞLAR. KOMUTTA 24 SAATTEN DAHA UZUN BİR ZAMAN DİLİMİNDE OLUŞTURULAN İMAJLAR SİLİNMEKTEDİR.
docker image prune -a --filter "until=24h"

Dockeri sunucuya bağlamak

  • docker hub sitesine gidilip bir hesap oluşturulur.

  • sunucuya docker login komutu girilir

  • kullanıcı adı ve şifre girilerek bağlantı sağlanır.

  • ekran hatası alınırsa, sudo apt install gnupg2 pass kodu girilir.

BİR KONTEYNERİ EN BASİT HALİYLE TANIMLAMAK GEREKİRSE BİR İMAJIN ÇALIŞIR DURUMDAKİ HALİDİR DİYEBİLİRİZ.

Konteyneri zorla başlatmak

docker run -d -ti nginx 

Docker konteynırı başlatmak

docker container run imaj_ismi
docker run -ti -d centos

BİR KONTEYNER İŞLEMİNİ TAMAMLADIKTAN SONRA SONLANIR.

Konteynırı başlatmak

docker container run -it İMAJ_İSMİ /bin/bash

Çalışan konteynerleri görüntüle

docker ps 
docker ps -a (deaktif konteynerleri de görüntüle)

  • YEREL İNPUT, OUTPUT VE HATTA HATA YÖNLENDİRMELERİNİ ÇALIŞAN BİR KONTEYNERE EKLER
docker container attach ID_İLK3_RAKAMI 

Mevcut bir konteyneri kopyalamak(imaj oluşturmak)

docker container commit ID_İLK3_RAKAM

yeni bir konteyner oluşturmak

**imaj yerel sistemde aranır, bulunamazsa docker kütüphaneden çekilir.

docker container create imaj_ismi
docker container create centos

Bir konteynerin dosya sistemi üzerinde yapılan değişiklikleri görmek

docker container diff ID_NUMARASI

Çalışan bir konteyner üzerinde komut çalıştırmak

  • örnek bir komut ıd si girilen konteynerde resolv.conf dosyası görüntüleniyor
docker exec ID_İLK3 cat /etc/resolv.conf   

Bir konteynerin dosya sistemini tar arşivi olarak yerel sisteme kaydetmek

docker export ID_İLK3 -o /exportContainer
ls -l /exportContainer

Kill ile çalışan konteynerleri durdurmak

docker ps
docker kill ID_İLK3
docker ps

Bir konteynerin loglarını göstermek

docker run -d -ti nginx (bu komut sonucu ortaya kod çıkar o komutun ik 5 i altta kullanılır.)
docker logs bcb27 

Yerel sistemdeki konteynerleri listele

docker container ps

Konteyner üzerindeki tüm sistem süreçlerini durdurmak

docker container pause
  • DOCKER CONTAİNER PORT: PORT VEYA ÖZEL MAPPİNG İŞLEMLERİNİ LİSTELER

docker run -d -ti -p 80:8080 nginx
docker port 2ea

Durdurulmuş olan bütün konteynerleri sistemden silmek

docker container prune

Konteynerlerin sistemdeki isimlerini değiştirmek

docker ps
docker rename vigilant_wescoff rename_test
docker ps (docker ps yapıldığında en sağ tarafta name diye bölüm var.)

Konteyner restart

docker restart d9d

Çalışır durumdaki konteyneri silmek

docker rm -f 

Docker ağların tümünü silmek

docker network rm $(docker network  ls -q)

Konteyner anlık kaynak kullanımı kontrol

docker container stats 
  • DOCKER STOP KOMUTU GİRİLDİĞİNDE HEDEF KONTEYNERE -15 SİNYALİ GÖNDERİLİR VE SÜREÇLERİN GÜVENLİ BİR ŞEKİLDE SONLANDIRILDIKTAN SONRA ÇIKILMASI BEKLENİR. OLASI BİR BEKLENMEYEN DURUMDA BU SEFER -9 SİNYALİ GÖNDERİLEREK MEVCUT SÜREÇLERİN BİTMESİ BEKLENMEDEN İŞLEMDEN ÇIKILMASI ZORLANIR.
docker container stop 

Konteynerde çalışan süreçleri listelemek

docker ps
docker top DOCKER_NAMES

Durdurulmuş konteyneri başlatmak

docker ps
docker unpause ID_İLK3

HOST ADI VARSAYILAN OLARAK KONTEYNER ID DIR.

  • ARKA PLANA ATILMIŞ BİR KONTEYNERE TEKRAR BAĞLANABİLİRİZ

docker ps 
docker attach ID_İLK3

KONTEYNER İÇERİSİNDEYKEN ÇIKIŞ YAPMAK İÇİN EXİT KOMUTUNU KULLANABİLİRİZ. KOMUT GİRİLDİĞİNDE BASH KABUĞU SÜRECİ ÖLDÜRÜLÜR. BU DA KONTEYNERİN DURMASINA NEDEN OLUR.

Konteyner için kaynak kullanımı sınırlandırma

docker run -d --name kaynakTest --cpu-shares 256 --memory 128M centos
docker image inspect centos

Konteyner yaşam döngüsü

  • imaj oluşturuluyor
docker container create imaj_adı
  • imaj çalıştırılıyor
docker container run -it ubuntu:latest 

konteyneri durdurmadan terminalden çıkmak istiyorsak ctrl-pq kullanılır.

  • konteyner durdurulur

docker container stop id 
- çalışan konteynerleri listele

docker container ls  
- tüm konteynerleri listele

docker container ls -a 
  • durdurulmuş konteyner çalıştırılır
docker container start 
  • yeniden başlattığımız konteynere bağlanarak konteyneri durdurmadan önce oluşturduğumuz dosya ve klasörleri kontrol edelim
docker exec -ti ubuntu bash

BİR KONTEYNER STOP PARAMETRESİNİ KULLANIP SONRA YENİDEN BAŞLATILSA DAHİ İÇERİDEKİ VERİLER YEREL DOSYA SİSTEMİNDE HALA TUTULUR. KONTEYNERİ SİSTEMDEN SİLMEK İÇİN KİLL KULLANILIR.

Konteyner üzerindeki değişikliklerin talep edilmesi

docker run -ti nginx /bin/bash
mkdir kre33
cd kre33
touch 1 2 3 
ls
pwd

  • root kullanıcısına dönülüp yapılan işlemler docker conteiner diff ID_NUMARASI ile kontrol edilir.

Konteynerlerin arka planda çalıştırılması

docker run -d -ti nginx (bu iş için -d kullanılır)

Docker volume (veri paylaşımı)

docker volume create 
docker volume create --name baglanti_noktasi
docker volume ls 
docker volume inspect baglanti_noktasi
docker volume rm baglanti_noktasi

  • KONTEYNER KAYNAKLARININ GÜNCELLENMESİ (EĞER TEK ÇEKİRDEĞİN ATANDIĞI İKİ FARKLI KONTEYNER ARASINDA KAYNAK PAYLAŞIMI YAPILACAKSA;)

docker run --cpu-shares 700 --name app1 nginx
docker run --cpu-shares 324 --name app2 redis
docker run --cpus 1 --name app1 nginx  (işlemci kullanımı bir adet olarak ayarlanmıştır.)
docker run --cpus 0.5 --name app1 nginx (tek bir çekirdeği paylaşmak için 0.5 kullanılır.)
docker inspect İD_İLK5 | grep CpuSha (sorgulama)
docker run -d --memory =500m alphine (alphine konteynırının ram kullanımını 500mb olarak sınırlıyoruz.)
docker inspect İD_İLK5 | grep Memory (sorgulama)

Bir konteyneri interaktif modda çalıştırmak

docker run -ti centos bash 

Dockerde mysql ile ilgili tüm bileşenleri sorgulamak

docker search mysql

Docker login ile giriş yapamıyorum

sudo apt install gnupg2 pass

Docker wordpress kurulumu

docker pull wordpress
docker pull mysql
docker run --name wordpress_database -e MYSQL_ROOT_PASSWORD=test -d mysql
docker run --name wordpress_website --link wordpress_database:mysql -p 80:80 -d wordpress
docker run -d -p 80:80 --name server5 wordpress

**Docker File

  • Dockerfile nin temel mantığı şudur;

  • touch ile bir dizin oluşturulur.

  • içerisine komutlar sırasıyla girilir.

  • ve docker build . komutu ile çalıştırılır.

  • bu işlem toplu komutları tek bir komutla çalıştırıyor. bizi büyük bir zahmetten kurtarıyor.

Docker File uygulaması

  • bir dizin açtık ve içerisine sadece şu komutu yazın. FROM centos (from centos komutu centos imajını indirir)

  • dizini kaydedip çıkın ve çalıştırın docker build .

  • editör olarak nano kulllanabilirsiniz.

Docker file anlamlar

  • MAINTAINER geliştirici_Adı geliştirici_maili (geliştirici hakkında bilgi verir)

  • İMAJ OLUŞTURMAK (MEVCUT İMAJI KOPYALAMAK)

docker commit ID YENİ_AD:VERSİYON

Konteyneri ağa bağlamak

docker network connect test_network mycount (mycont adlı konteynere test_network ağını bağlar)
docker network connect --ip 10.172.7.23 test_network mycon2 (istediğimiz ip i atamak)
docker network disconnect test_network mycon1
docker network ls (varolan ağları sıralar)
docker network rm (varolan bir ağı siler)
docker run -d -p 8081:8081 --name server2 nginx (direk nginx kurmak)

Docker ağ oluşturmak

docker network create --driver bridge testnetwork
docker network inspect testnetwork (kontrol)

Konteyneri ağa bağlamak

docker run --net=AG-ADI centos

Konteynere oluşturduğumuz iki ağı bağlamak

docker network create net1
docker network create net2 
docker create -ti --net net1 ubuntu /bin/bash
docker network connect net2 ID_iilk3
docker inspect ID_ilk3 | grep netw
docker inspect ID_İLK3 (üstteki komut çalışmazsa)

Docker apache kurulumu

sudo docker run -dit --name tecmint-web -p 8080:80 -v /home/user/website/:/usr/local/apache2/htdocs/ httpd:2.4
vi /home/user/website/docker.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Learn Docker at Tecmint.com</title>
</head>
<body>
<h1>Learn Docker With Us</h1>
</body>
</html>

Konteyner içerisinde düzenleme

apt-get update
apt-get install -y yum 
apt-get install nano

Docker Zabbix

docker run --name zabbix-appliance -t \
-p 10051:10051 \
-p 80:80 \
-d zabbix/zabbix-appliance:latest

Docker Grafana

docker run -d --name=grafana -p 3000:3000 grafana/grafana:6.6.0-ubuntu

Mkdir dosya oluşturulmasında hata

mkdir -p DOSYA_ADI (mkdirin önünde -p kullanıldığında bu sorun çözülecektir)

Konteyner log kaydı

docker inspect --format={{.LogPath}} cafcea2242c0
grep error ÇIKAN_DOSYA_YOLUNU_YAPIŞTIR

Ağ kullanımları (port yönlendirmeleri)

netstat -tlpu

Docker Prometheus

docker search prometheus
docker pull prom/prometheus
docker run -it -d --name prom -v /etc/prometheus:/etc/prometheus -p 9090:9090 prom/prometheus
docker run -d -p 9090:9090 --name server1 prom/prometheus  (üsttekine alternatif)
docker ps (konteynerin çalışabilirliğini kontrol ediniz)
PROMETHEUS ÇALIŞIP HEMEN DURUYORSA RAM SORUNU OLABİLİR. 

  • AĞ ARAYÜZÜ OLUŞTURUP PORT YÖNLENDİRME İLE MYSQL VE PHPMYADMİN BAĞLANTISI KURMAK

docker network create mysql-network
docker run -e MYSQL_ROOT_PASSWORD=test --name mysqltest mysql/mysql-server
docker network connect mysql-network mysqltest
docker run -d --name pmatest -e PMA_HOST=ip_adresiniz -p 8080:80 phpmyadmin/phpmyadmin
docker network connect mysql-network pmatest

Docker compose komutları

docker-compose ps (compose ile indirilmiş konteynerleri listele) 
docker-compose pull (compose dosyasındaki imajları indir)
docker-compose kill,stop,start (normal docker konteynerlerini kontrol eder gibi composeleride öyle edebilirsiniz)

Docker compose dosyası oluşturmak (nginx kurulum örneği)

mkdir DockerComposeFile
cd DockerComposeFile/
touch docker-compose.yml
ls
nano docker-compose.yml

dockercompose

resimdeki gibi yeri yerine yazılmalıdır. yoksa yazım hatası verir. boşluklar dahi aynı olmalıdır.
docker-compose config
docker compose up -d 
docker compose ps 

Konteynerin hangi porta yönlendiğini gör

docker port [CONTAINER]

Konteynerin portunu durdurmak

docker stop [CONTAİNER]

DOCKER