Saya mengikuti Dokumentasi CoreOS Docker dan menyebutkan mulai wadah dengan perintah seperti:
docker run someImageName /bin/somebinary
Di mana someImageName
sebuah gambar. Ketika / bin / somebinary keluar, gambar tidak akan lagi berjalan.
Saya hanya ingin menjalankan gambar, tanpa menentukan biner untuk dijalankan. Sebagai gantinya, saya hanya ingin menjalankan layanan (misalnya, systemd / sysvinit) yang biasanya dijalankan di dalam gambar OS .
Ini sepertinya hal paling umum yang ingin dilakukan oleh Docker, tetapi mencoba menjalankan gambar tanpa perintah kembali:
2014/02/05 14:49:19 Error: create: No command specified
Bagaimana saya bisa memulai wadah Docker dan menjalankan OS penuh, daripada menentukan perintah ?
Jawaban:
Seperti yang didokumentasikan di sini, Anda hanya menjalankan
/sbin/init
sebagai perintah sama seperti boot unix lainnya dari satu pengguna ke mode multi-pengguna./programming/19332662/start-full-container-in-docker
Kontainer dapat menjadi sistem operasi penuh, mereka hanya tidak harus (VM juga tidak dalam hal ini, itu hanya lebih rumit untuk mengkonfigurasi dan mengelola).
Saya akan mengatakan inti dari Docker adalah untuk membuat wadah aplikasi mudah, sehingga Anda hanya perlu mengkonfigurasi aplikasi, bukan seluruh OS.
sumber
docker ps -notrunc
, untuk mendapatkan ID wadah, lalusudo /usr/sbin/lxc-attach -n containerID
masuk ke gambar yang sedang berjalan. Seperti yang disebutkan poster lain, saya tidak benar-benar membutuhkan init kedua, jadi saya akan memeriksa wadah perintah tunggal berikutnya ...Docker adalah sistem untuk manajemen dan penyebaran wadah aplikasi , bukan wadah sistem operasi . Sepertinya Anda sedang mengkonfigurasi menjalankan wadah buruh pelabuhan dengan mem-boot sistem operasi.
Kontainer Docker Anda harus aplikasi dengan tujuan tunggal dan sangat sempit yang dapat dimulai dengan satu perintah. Jika Anda mencari sesuatu yang lebih kompleks dari itu, maka Docker bukanlah solusi yang Anda cari. Dalam hal ini, lihat KVM, ESXi, OpenVZ, LXD dll.
Jika Anda hanya mencari bagaimana Anda dapat menentukan default
CMD
danENTRYPOINT
untuk wadah Anda, Anda dapat melakukannya saat membangun menggunakan Dockerfile.sumber
/sbin/init
, tetapi tidak harus memilikinya. Anda kemungkinan menggunakan wadah ubuntu default atau sesuatu seperti itu. Ada banyak bit dalam wadah ini yang bisa dilepas jika diinginkan.Untuk menjalankan sistem operasi penuh dalam sebuah wadah, buat Dockerfile berikut:
Kemudian bangun dan mulai wadah dan masukkan shell di dalamnya untuk menjelajahi layanan yang berjalan di dalamnya:
Layanan systemd lengkap di dalam wadah. Indah.
sumber
Jalankan saja dari gambar yang sama sebanyak yang diperlukan. Kontainer baru akan dibuat dan mereka kemudian dapat dimulai dan dihentikan masing-masing menyimpan konfigurasinya sendiri. Untuk kenyamanan Anda akan lebih baik untuk memberikan masing-masing wadah nama dengan "--name".
Fi:
Itu dia.
Setelah itu, wadah Anda dibuat selamanya dan Anda bisa memulai dan menghentikannya seperti VM.
Untuk masuk ke dalam wadah dan melakukan apa yang ingin Anda lakukan:
sumber