Docker menggunakan arsitektur berbasis daemon di mana CLI terhubung ke proses berumur panjang yang berjalan secara terpisah di mesin Anda atau host jarak jauh. Perintah CLI tidak akan berfungsi dan container Anda biasanya akan offline jika daemon berhenti.
Berikut cara memeriksa apakah daemon Docker aktif sehingga Anda dapat mendiagnosis masalah dengan container dan docker
memerintah. Saat daemon tidak berjalan, Anda akan melihat pesan “tidak dapat terhubung ke daemon Docker” setiap kali Anda menggunakan docker
CLI.
Memeriksa Dengan Systemctl
Anda dapat memeriksa status Docker dengan systemctl
pada distribusi yang menggunakan Systemd untuk manajemen layanan. Ini mencakup sebagian besar sistem operasi populer termasuk Debian, Ubuntu, CentOS, dan Red Hat.
sudo systemctl status docker
Periksa apa yang ditampilkan di bawah "Aktif." Jika Anda melihat active (running)
berwarna hijau, daemon Docker sedang berjalan dan container Anda akan aktif.
Status aktif inactive
menunjukkan layanan telah berhenti. Coba jalankan dengan menjalankan sudo systemctl start docker
. Status harus berubah menjadi active (running)
setelah daemon dimulai.
Jika Anda melihat status failed
berwarna merah, daemon tidak dapat dimulai karena kesalahan. Anda harus meninjau log startup layanan yang ditampilkan nanti di systemctl
perintah output karena ini biasanya berisi petunjuk yang memungkinkan Anda mengetahui apa yang salah.
Jika tidak ada resolusi yang jelas tersedia, mulai daemon secara manual dalam mode debugging untuk mendapatkan informasi lebih lanjut tentang rutinitas startupnya.
sudo dockerd --debug
Reboot mesin host Anda atau restart layanan Docker dengan systemctl restart docker
dapat membantu meringankan masalah sementara juga.
Memeriksa Detail Proses
Cara lain untuk memeriksa daemon Docker yang sedang berjalan adalah dengan memeriksa file ID prosesnya. Daemon menulis ID prosesnya ke /var/run/docker.pid
setiap kali dimulai. Ketika file ini ada, Docker harus berjalan dan siap untuk koneksi CLI.
cat /var/run/docker.pid
Anda dapat menggunakan teknik ini untuk membuat skrip program yang memeriksa apakah daemon masih hidup. Membaca file memberi Anda ID yang dapat Anda gunakan dengan alat seperti top
untuk mendapatkan informasi lebih lanjut tentang proses Docker:
cat /var/run/docker.pid # process id = 1000 top -p 1000
Anda juga bisa mendapatkan ID proses denganpidof
memerintah. Ini menerima nama proses dan mengembalikan ID pertama yang cocok:
pidof dockerd # process id = 1000 # view information with top top -p `pidof dockerd`
Ada daemon Docker yang aktif di mesin Anda jika top
cocok dengan dockerd
proses. Ini bisa lebih andal daripada mencari docker.pid
– jika daemon crash, docker.pid
bisa tertinggal setelah prosesnya hilang.
Menangani File Proses Stuck
Daemon akan menolak untuk memulai ulang ketika file PID ada. Ini bisa membuat Anda terjebak dalam loop restart jika file tersebut benar-benar yatim piatu dari proses sebelumnya. Anda akan melihat pesan ini saat menjalankan dockerd
:
failed to start daemon: pid file found, ensure docker is not running or delete /var/run/docker.pid
Gunakan pidof dockerd
untuk memastikan Docker benar-benar berhenti. Lanjutkan jika perintah tidak mengeluarkan output, mengonfirmasi bahwa tidak ada proses yang berjalan.
Jalankan sudo rm /var/run/docker.pid
untuk menghapus file ID proses lama. Daemon sekarang seharusnya mulai berhasil saat berikutnya Anda menjalankan dockerd
atau service docker start
.
Masalah file PID biasanya ditemui saat Anda memotret mesin virtual dan kemudian membuat instance baru dari gambar. File proses akan disertakan dalam snapshot, yang menyebabkan daemon Docker di VM baru menganggapnya sudah berjalan.
Memeriksa Kontainer Individu
Status masing-masing container diakses melalui docker ps
memerintah. Ini memancarkan tabel yang berisi detail semua container yang sedang berjalan.
docker ps
Gabungkan docker ps
perintah dengan grep
untuk dengan mudah memeriksa apakah wadah tertentu dijalankan dengan ID atau nama:
docker ps | grep my-container-name
Sekarang output akan difilter untuk menampilkan wadah yang Anda pilih. Tidak akan ada catatan jika penampung tidak berjalan.
Kontainer yang dihentikan ditampilkan menggunakan docker ps -a
. Wadah yang dihentikan dapat dimulai dengan docker start
perintah:
docker start my-container
Kontainer kemudian akan pindah ke docker ps
biasa keluaran. Anda dapat menghentikannya lagi dengan docker stop my-container
.
Kesimpulan
Anda memiliki beberapa opsi untuk dipertimbangkan ketika Anda ingin mengetahui apakah Docker sedang berjalan. Ada manajer layanan sistem operasi Anda, docker.pid
file, dan alat pemeriksaan proses reguler seperti top
dan pidof
.
Ketika datang ke wadah individu, docker ps
menyediakan daftar semua yang sedang berjalan di host Anda. Informasi yang lebih komprehensif tentang status container apa pun dapat diperoleh dengan docker inspect container-name
yang memberikan detail konfigurasi jaringan, volume, dan label dalam format JSON.