Mengatasi Kegagalan Menjalankan Service Docker

Mengatasi Kegagalan Menjalankan Service Docker

Dua hari yang lalu server saya update ke docker versi 17.09.0-ce. Docker versi ini sudah full menggunakan Moby Project. Awalnya dalam update, container yang sudah berjalan tidak saya utak-atik dan saya biarkan apa adanya. Akan tetapi setelah mengetahui ada beberapa paket yang perlu di update seperti ghost versi yang terbaru (versi 1.10) maka saya memutuskan shutdown sementara beberapa website seperti wordpress dan ghost yang sudah berjalan. Saya kemudian melakukan build ulang container yang ada. Setelah update dilakukan, saya mencoba untuk melakukan rebuild container. Hasilnya rebuild container tidak dapat dilakukan karena ada layer yang hilang. めんどくさい !. Sayangnya saya tidak catat pesan kesalahan yang terjadi untuk dokumentasi.

Setelah rebuild gagal saya berpikir untuk restart service docker. Sayangnya docker pun gagal untuk restart dan servicenya mati. Maka jalan terakhir saya coba untuk restart server secara fisik. Saya cukup panik karena docker yang saya gunakan ini cukup penting salah satunya untuk mendukung riset saya. Apa boleh buat beberapa debug yang perlu dilakukan diantaranya adalah cek log pada server. Saya menggunakan GNU/Linux Lubuntu 16.04.3 LTS (Xenial) dimana log kesalahan pada GNU/Linux sejak menggunakan format systemd secara pribadi cukup membingungkan dan secara jujur tidak jelas. Mungkin saya saja yang kurang baca. Oke tidak apa-apa. Saya mencoba menjelajahi log pada /var/log/syslog. Berkas syslog hanya menunjukkan sebagai berikut untuk docker service.

Oct 1 07:38:36 nada dockerd[2421]: time=”2017-10-01T07:38:36.652353018+09:00″ level=info msg=”[graphdriver] using prior storage driver: btrfs”
Oct 1 07:38:36 nada dockerd[2421]: Error starting daemon: layer does not exist
Oct 1 07:38:36 nada systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE
Oct 1 07:38:36 nada systemd[1]: Failed to start Docker Application Container Engine.
Oct 1 07:38:36 nada systemd[1]: docker.service: Unit entered failed state.
Oct 1 07:38:36 nada systemd[1]: docker.service: Failed with result ‘exit-code’.

Informasi berkas log sangat tidak membantu. Bisa jadi salah satu penyebabnya adanya file btrfs yang korup. Langkah selanjutnya adalah cek btrfs file system yang ada pada folder /var/lib/docker. Saya mencoba cek folder yang ada pada /var/lib/docker. Karena kaitannya dengan file system, agar tidak terjadi hal-hal yang tidak diinginkan alangkah baiknya kita backup folder /var/lib/docker terlebih dahulu. Jalankan perintah berikut.

andrey@nada:~$ sudo btrfs scrub start /var/lib/docker -B -R -d -r 2>&1

Hasil dari scrub sebagai berikut.

scrub started at Sun Oct 1 20:52:02 2017 and finished after 00:01:06
data_extents_scrubbed: 208874
tree_extents_scrubbed: 42852
data_bytes_scrubbed: 9318592512
tree_bytes_scrubbed: 702087168
read_errors: 0
csum_errors: 0
verify_errors: 0
no_csum: 20167
csum_discards: 0
super_errors: 0
malloc_errors: 0
uncorrectable_errors: 0
unverified_errors: 0
corrected_errors: 0
last_physical: 32250003456

Beberapa hal yang perlu diperhatikan saya cetak tebal. Perintah ini berfungsi untuk mengecek kesalahan atau adanya file system yang korup pada btrfs. Hasil statistik menunjukkan tidak ada error. Sehingga saya yakin btrfs aman. Bisa jadi adanya layer yang error.

Langkah yang saya lakukan kemudian cukup ekstrem. Saya rename folder /var/lib/docker ke /var/lib/docker.old. Selanjutnya saya buat folder baru docker. Service kemudian saya aktifkan kembali. Ternyata berhasil. Cara ini cukup ekstrem dan simpel. Saya tidak bertanggung jawab apabila ada hal-hal yang tidak diinginkan terjadi pada docker anda. Ingat untuk selalu backup. Selamat mencoba.

Leave a Reply

Your email address will not be published. Required fields are marked *