Aşağıdaki listede sıklıkla kullanılan docker ve docker compose komutları var ama daha fazlasını görmek isterseniz Docker safyasına bakabilirsiniz.


Genel


Containerı çalışır vaziyette tutar.


CMD tail -f /dev/null

Docker containerlerin çalıştığı ve erişebildiği ana işletim sisteminin IP adresini alma.


$ ip addr show docker0 | grep -Po 'inet \K[\d.]+'

Imaj, container, network, cache vs gibi kullanılmayan verileri siler.


$ docker system prune --volumes

Image


Tüm imajların listeler.


$ docker images

Tüm imajları siler.


$ docker rmi $(docker images -q)

Tek bir imajı siler.


$ docker rmi {image-id}
$ docker rmi {image-name}

Komutun çalıştığı yerdeki Dockerfile ile yeni bir imaj yaratır.


$ docker build -t {new-image-name} .

İmaj commit geçmişini verir.


$ docker history {image-name}
$ docker history {image-name:image-tag}

Mevcut olan bir container üzerinden yeni bir imaj yaratır. İmaj container içinde yapılan tüm değişiklikleri kapsar.


$ docker commit {existing-container-name} {existing-image-name:new-image-tag}

Mevcut imajı etitekleyerek yeni bir imaj yaratır.


$ docker tag {existing-image-{id/name/name:existing-tag-id}} {new-image-name:new-tag-id}}

Container


Aktif olan containerleri listeler.


$ docker ps
$ docker container ls

Aktif olan ve olmayan containerleri listeler.


$ docker ps -a
$ docker ps --all
$ docker container ls --all

Durmuş olan containerı çalıştırır.


$ docker start {container-name/id}

Çalışan containerı durdurur.


$ docker stop {container-name/id}

Çalışan containerların terminaline girer.


$ docker attach {container-id}
$ docker attach {container-name}
$ docker exec -it {container-id} /bin/bash
$ docker exec -it {container-name} /bin/bash

Çalışan tüm containerları durdurur.


$ docker stop $(docker ps -a -q)

Çalışmayan containerı siler.


$ docker rm {container-id}
$ docker rm {container-name}

Yerel klasörü container içine kopyalar. Bu genelde production alanındaki kodu izole etmek için kullanılır.


$ docker cp {local_dir} {container_name/id}:{container_dir}

Çalışmayan tüm containerları siler.


$ docker rm $(docker ps -a -q)

Mevcut olan imaj ile yeni bir container yaratır. /bin/bash mecburi değildir.


$ docker run -i -t -d --name {new-container-name} {existing-image-id}
$ docker run -i -t -d --name {new-container-name} {existing-image-name}
$ docker run -i -t -d --name {new-container-name} {existing-image-id} /bin/bash
$ docker run -i -t -d --name {new-container-name} {existing-image-name} /bin/bash
$ docker run -i -t -d --name {new-container-name} {existing-image-name:existing-image-tag}
$ docker run -i -t -d --name {new-container-name} {existing-image-name:existing-image-tag} /bin/bash

Ana işletim sisteminden container bağlanır.


$ docker run -d -p 5000:80 --name {new-container-name} {existing-image-name/id}
$ curl 127.0.0.1:5000

Linux komutlarını container içinde çalıştırır.


$ docker exec -it {container-name} {linux-command}

Container klasörünü ana işletim sistemiyle paylaşır.


$ docker run -i -t -d -v {host-folder-path}:{container-folder-path} --name {container-name} {image-name/id}

Container detaylarını verir.


$ docker inspect {container-name/id}

Container kütük listesi.


$ docker logs -t {container-name/id}

Container kütük listesinin takibi.


$ docker logs -t -f {container-name/id}

Network


Tüm ağların listesi.


$ docker network ls

Bir ağı kaldırır.


$ docker network rm {network-name/id}

Mevcut olan "bridge" ağ üzerinden yeni bir ağ yaratır.


$ docker network create --driver bridge {network-name}

Mevcut olan "bridge" ağ üzerinden IP adresi belirleyerek yeni bir ağ yaratır. 24 "subnet-mask" bize 255.255.255.0 subnet mask, 8 ise 255.0.0.0 subnet mask verir.


$ docker network create --subnet {ip-address}/{subnet-mask} --driver bridge {network-name}

İsmi api_default olan ağın IP addresini almak.


$ echo $(docker network inspect api_default | grep Gateway | grep -o -E '[0-9\.]+')

Volume


Tüm volume listesi.


$ docker volume ls

Kullanılmayan tüm volumelerin silinmesi.


$ docker volume rm $(docker volume ls -q)

Soruşturma


Docker komutlarının çıktılarını verir.


$ docker events&

Docker komutlarının çıktılarını durdurur.


$ ps aux | grep docker events
$ kill -9 {docker-events-pid}

Container kütük listesi.


$ docker logs -t {container-name/id}

Container yaratmadan imaj ile çalışma. Container içine girdikten sonra Dockerfile ile çalıştırılması gereken komutları çalıştırıp hataları görebilirsiniz.


$ docker run -i -t {image-name/id} /bin/bash

Compose


Buradaki açıklamalar "docker-compose.yml" içinde tanımlanan servisler için geçerlidir.


"docker-compose.yml" dosyasının ilişki yapısını verir.


$ docker-compose config

Çıktı vererek tüm imajları yaratır ve containerları çalıştırır.


$ docker-compose up

Tüm imajları yaratır ve containerları arka planda çalıştırır.


$ docker-compose up -d

Çalışan tüm containerları durdurur.


$ docker-compose stop

Tüm imaj, container ve ağları siler.


$ docker-compose down

Tüm imaj, container, ağ ve volumeleri siler.


$ docker-compose down --volumes

Verilen servis ile ilişkili olan containerı yaratıp, içindeki ENV değişkenlerini listeler.


$ docker-compose run {service_name} env

Tüm servis imajlarını yeniden yaratır.


$ docker-compose build

Tüm servis imajlarını yeniden yaratır ve sadece değişenlerin containerlarını yeniden yaratır. Genelde deployment için kullanılır.


$ docker-compose up -d --build

Sadece bir tane imaj ve onun containerını yeniden yaratır. Diğerlerinin hepsini gözardı eder.


$ docker-compose up -d --no-deps --build {service_name}

Sadece bir tane imajı yeniden yaratır. Genelde iki işlemin parçası olarak docker-compose up --no-deps -d {service_name} komutundan hemen önce çalıştırılır.


$ docker-compose build {service_name}

Sadece bir tane containerı yeniden yaratır. Genelde iki işlemin parçası olarak docker-compose build {service_name} komutundan hemen sonra çalıştırılır.


$ docker-compose up --no-deps -d {service_name}

Tüm containerları docker-compose.yml dosyasının yolunu belirterek yeniden yaratır.


$ docker-compose -f path/to/docker-compose.yml up -d

Bir kereye mahsus olmak üzere docker-compose.yml dosyasında belirtilen bir servis ile komut çalıştırır.


$ docker-compose -f path/to/docker-compose.yml run {service_name} {command_to_run} 

Tüm servis imajlarını ve containerlarını yeniden yaratır. Genelde deployment için kullanılır.


$ docker-compose build
$ docker-compose up -d

İstisnaen "docker-compose.yml" içinde yapılan değişleri gözardı ederek yine "docker-compose.yml" dosyasında tanımlı olan tüm servisleri yeniden başlatır.


$ docker-compose restart