Docker Sık Kullanılan Komutlar-1
Merhaba bu yazımda sık sık kullandığım docker komutlarını derleyeceğim.
- NGINX Örneği ile Docker Container Yaratma ve Çalıştırma
- Docker Container Listelemek
- Çalışan Docker Container Özelliklerini Yazdırmak
- Docker Container Durdurmak
- Docker Container Kaldırmak (rm)
- Docker Images Listeleme
- Ana Makineden Docker Container’a Dosya Kopyalamak
- Docker Container’dan Ana Makineye Dosya Kopyalamak
- Çalışmayanlar dahil Docker Container’ları Listelemek
- Docker Container Komut Satırına Erişmek, Bağlanmak
- Docker Container Loglarını Temizlemek
- Docker Container root Kullanıcı ile Bağlanmak
1. NGINX Örneği ile Docker Container Yaratma ve Çalıştırma
sudo docker container run --publish 80:80 --detach --name webhost nginx
Örnek çıktı uzun bir container id numarası olacaktır.
f1ae36d58a81efe40afcda069f26b4bd27824442fa33f0a079bd516df4e85b37
–detach parametresi konteynırın arka planda çalışmasını sağlar, komut satırını meşgul etmez. Konteynırı her çalıştırdığımızda yeni benzersiz bir id alır. –name konteynıra bizim belirlediğimiz bir isimdir. Internet tarayıcınıza (Örn Chrome) gidip localhost yazdığınızda Welcome to nginx! sayfasını görmeniz konteynırın başarıyla oluştuğu ve sağlıklı çalıştığı anlamına gelir.
2. Docker Container Listelemek
sudo docker container ls
veya
sudo docker ps
Beklenen çıktı:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f1ae36d58a81 nginx "nginx -g 'daemon of…" About a minute ago Up About a minute 0.0.0.0:80->80/tcp webhost
3. Çalışan Docker Container Özelliklerini Yazdırmak
sudo docker container inspect mysql_server
4. Docker Container Durdurmak
docker container stop container_id veya docker container stop container_name
5. Docker Container Kaldırmak (rm)
sudo docker container rm 358 77b 887 ed5 cb0 eb3 d7e
docker container kaldırmadan önce durdurmalıyız. rm karşısındakiler container id numaraları. Aynı şekilde isim de olabilir.
6. Docker Images Listeleme
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 27a188018e18 2 weeks ago 109MB zookeeper 3.4.14 2a7f6fc5c8a1 3 weeks ago 150MB alpine latest cdf98d1859c1 3 weeks ago 5.53MB
7. Ana Makineden Docker Container’a Dosya Kopyalamak
Format şöyle:
docker cp /ana/makine/dosya/adresi/dosya.uzanti <container-id>:/container/dizin/adresi
Örnek (Ubuntu üzerinde):
docker cp /home/erkan/flink-ogrenme/scala-wordcount/target/flink-scala-wordcount-1.0-SNAPSHOT.jar b7d00b868791:/opt/flink
Bulunduğum dizindeki tüm dosyaları konteyner içinde bir dizine kopyalamak
docker cp . d8f:/tutorial
8. Docker Container’dan Ana Makineye Dosya Kopyalamak
Bu komutu container dışında ana makine komut satırından vereceğimizi unutmayalım. Format:
docker cp <container-id>:/konteynır/dosya/adresi/dosya.uzanti /ana/makine/hedef/dizin/adresi
Örnek:
docker cp cas1:/opt/cassandra/conf/cassandra.yaml /home/erkan/cassandra_docker_cluster
9. Çalışmayanlar dahil Docker Container’ları Listelemek
sudo docker ps -a
10. Docker Container Komut Satırına Erişmek, Bağlanmak
Docker konteynır’a sanki bir sanal makinenin komut satırına bağlanır gibi erişebiliriz.
Format:
sudo docker exec -it <containerid> bash
Örnek (Ubuntu):
sudo docker exec -it b7d bash
Örnek (Windows-Docker-Toolbox):
winpty docker.exe exec -it b7d bash
Beklenen örnek sonuç:
root@jobmanager:/opt/flink#
Aslında burada kullanılan bash bir çok olasılıktan sadece birisi. Örneğin container bir mongodb container olsaydı bash yerine mongo yazdığımızda mongo shell’e doğrudan bağlanıp mongo komutları yazıyor olacaktık.
11. Docker Container Loglarını Temizlemek (Log Truncate)
Bazen tail ettiğinizde eski loglar can sıkabilir. O yüzden özellikle geliştirme çalışmalarında container loglarını silmeye ihtiyaç duyabilirsiniz.
[train@localhost logstash]$ echo $(docker inspect --format='{{.LogPath}}' logstash) /var/lib/docker/containers/4d5350e445150c3caaf6ceaa8670d1cee22d0e08896ff38ff70e1650ce9c61ad/4d5350e445150c3caaf6ceaa8670d1cee22d0e08896ff38ff70e1650ce9c61ad-json.log [train@localhost logstash]$ sudo bash -c '> /var/lib/docker/containers/4d5350e445150c3caaf6ceaa8670d1cee22d0e08896ff38ff70e1650ce9c61ad/4d5350e445150c3caaf6ceaa8670d1cee22d0e08896ff38ff70e1650ce9c61ad-json.log' [sudo] password for train:
12. Docker Container root Kullanıcı ile Bağlanmak
docker exec -it -u root logstash bash [root@4d5350e44515 logstash]#