GNU/Linux >> Belajar Linux >  >> Linux

Mulai Layanan Secara Otomatis di Docker Container

EDIT:Saya telah belajar banyak tentang Docker sejak memposting jawaban ini. "Memulai layanan secara otomatis dalam wadah Docker" bukanlah pola penggunaan yang baik untuk Docker. Sebagai gantinya, gunakan sesuatu seperti armada, Kubernetes, atau bahkan Monit/SystemD/Upstart/Init.d/Cron untuk secara otomatis memulai layanan yang dijalankan di dalam container Docker.

JAWABAN ASLI:Jika Anda memulai wadah dengan perintah /bin/bash , maka Anda dapat melakukannya dengan cara yang diuraikan di sini:https://stackoverflow.com/a/19872810/2971199

Jadi, jika Anda memulai wadah dengan docker run -i -t IMAGE /bin/bash dan jika Anda ingin memulai apache2 secara otomatis saat penampung dimulai, edit /etc/bash.bashrc dalam wadah dan tambahkan /usr/local/apache2/bin/apachectl -f /usr/local/apache2/conf/httpd.conf (atau apa pun perintah start apache2 Anda) ke baris baru di akhir file.

Simpan perubahan pada gambar Anda dan mulai ulang dengan docker run -i -t IMAGE /bin/bash dan Anda akan menemukan apache2 berjalan saat Anda memasang.


Saya kira Anda tidak bisa. Yang dapat Anda lakukan adalah membuat gambar menggunakan Dockerfile dan menentukan CMD di dalamnya, yang akan dijalankan saat wadah dimulai. Lihat dokumentasi pembuat untuk mengetahui dasar-dasarnya (https://docs.docker.com/reference/builder/) dan lihat Jalankan layanan secara otomatis dalam wadah buruh pelabuhan untuk informasi tentang menjaga agar layanan Anda tetap berjalan.

Anda tidak perlu mengotomatiskan ini menggunakan Dockerfile. Anda juga dapat membuat gambar melalui komit manual seperti yang Anda lakukan, dan menjalankannya dengan baris perintah. Kemudian, Anda memberikan perintah yang harus dijalankan (yang sebenarnya dilakukan oleh CMD Dockerfile). Anda juga dapat mengganti CMD Dockerfiles dengan cara ini:hanya CMD terbaru yang akan dieksekusi, yang merupakan perintah baris perintah jika Anda memulai wadah menggunakan satu. docker run -i -t base /bin/bash dasar perintah dari dokumentasi adalah contohnya. Jika perintah Anda terlalu panjang, tentu saja Anda dapat membuat skrip praktis.


Opsi yang dapat Anda gunakan adalah menggunakan manajer proses seperti Supervisord untuk menjalankan banyak proses. Seseorang menyelesaikan ini dengan sshd dan mongodb:https://github.com/justone/docker-mongodb


Linux
  1. Pengantar Docker

  2. Docker Run vs Start vs Create:Perbedaan Dijelaskan

  3. Cara Keluar dari Kontainer Docker

  1. Memahami Output Perintah "statistik buruh pelabuhan"

  2. Ulangi perintah secara otomatis di Linux

  3. lsb_release:perintah tidak ditemukan di wadah Docker Ubuntu terbaru

  1. Cara Menjalankan Perintah di Running Docker Container

  2. Contoh yang Berguna dari Perintah Docker ps

  3. Mengarahkan output perintah di buruh pelabuhan