13/01/2018 - DOCKER
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.
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
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}}
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}
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\.]+')
Tüm volume listesi.
$ docker volume ls
Kullanılmayan tüm volumelerin silinmesi.
$ docker volume rm $(docker volume ls -q)
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
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