Masalahnya di sini adalah pendekatan Anda. Docker tidak memiliki sistem init seperti yang biasa Anda lakukan pada sistem tradisional. Apa yang dilakukan buruh pelabuhan adalah mengganti PID 1 dengan proses yang Anda tentukan di CMD
atau ENTRYPOINT
perintah Dockerfile. Untuk saat ini, abaikan ENTRYPOINT
, karena menggantikan apa CMD
your Anda dijalankan dengan (biasanya /bin/sh -c
). Anda perlu menginstruksikan buruh pelabuhan untuk memulai layanan mongod Anda di Dockerfile Anda dengan CMD
perintah, seperti:
CMD usr/bin/mongod
Dan ketika Anda menjalankan wadah Anda, mongod akan menjadi PID Anda 1. Sekarang, Anda mungkin bertanya-tanya pada titik ini "Tapi bagaimana dengan server SSH saya?" dan jawabannya adalah:Jangan jalankan server SSH di wadah buruh pelabuhan Anda. ada beberapa kasus penggunaan di mana menjalankan server SSH boleh saja, tetapi hampir semua alasan "normal" (debug, C&C, dll) dibatalkan dengan "praktik terbaik" untuk mendapatkan shell di wadah Anda:
docker exec -it myContainer /bin/bash
Ini akan menjatuhkan Anda ke dalam shell di wadah berjalan Anda. Rekomendasi di sini untuk mengelola konfigurasi dan perubahan dalam wadah buruh pelabuhan Anda adalah dengan menggunakan sesuatu seperti Ansible. Namun, ingatlah bahwa wadah buruh pelabuhan bersifat sementara, dan Anda tidak boleh memulai ulang layanan dan mengubah status konfigurasinya. Jika Anda memerlukan perubahan konfigurasi, ubah Dockerfile atau data konfigurasi, lalu mulai wadah baru. Semoga beruntung! Di sini
adalah sedikit lebih banyak informasi tentang Dockerizing MongoDB, tetapi perlu diingat bahwa metode yang dijelaskan di sana mengubah ENTRYPOINT
di Dockerfile, yang sedikit lebih terlibat dan membutuhkan pemahaman yang lebih baik tentang apa yang terjadi di Dockerfiles.