Windows: cara memulai boot sistem docker VM att

Saya berada dalam situasi di mana saya perlu menjalankan docker di server build berbasis windows (saya biasanya bekerja dengan Arch/Debian Linux) dan saya tidak dapat menemukan cara agar docker VM memulai secara otomatis saat boot sistem. Di Linux itu akan menjadi layanan tetapi pada windows yang tampaknya tidak menjadi masalah.

Saya mengikuti instruksi pada https://docs.docker.com/engine/installation/windows/ dan semuanya berjalan ketika saya memulai docker VM dengan $ docker-machine create tetapi bagaimana cara memiliki ini sebagai layanan Windows atau serupa?

Tujuannya adalah untuk dapat menggunakan membangun gambar Docker, mulai sebagai wadah dan menjalankan tes e2e terhadap mereka. Karena kami menggunakan TeamCity untuk membangun ide tentang menyelesaikan ini dengan TeamCity juga akan berhasil, saya kira.

Saya menulis webapp kecil beberapa waktu lalu yang memiliki ketergantungan sistem yang hanya tersedia untuk sistem unix sehingga docker adalah pilihan alami (walaupun saya cukup sukses dengan vagrant ..)

Saya menggunakan windows untuk pengembangan dan juga menjalankan aplikasi web ini dalam wadah docker-nya.

Jadi saya menemukan masalah yang sama, "bagaimana memulai ini saat boot sistem"?

Saya berakhir dengan file batch kecil di direktori autostart saya yang berisi sesuatu seperti baris berikut:

docker-machine start defaultdocker run -d -p 8080:8080 -v //c/Users/%USERNAME%/somepath:/c/Users/%USERNAME%/somepath my/image --some.webapp.param=some-webapp-param-value

Panggilan pertama memulai mesin virtual" default", meskipun Anda harus dapat menentukan vm yang berbeda di sana. Panggilan kedua menjalankan wadah docker "My / image", mengekspos port 8080 ke sistem host dan memasang" somepath " dari direktori home pengguna saya. Pastikan untuk menentukan parameter "- d "saat menjalankan wadah" di latar belakang "(centang "docker run -- help")

Setelah itu webapp saya dapat dihubungi di alamat ip " VM default "(dalam kasus saya 192.168.99.100, ini mungkin berbeda pada sistem Anda, Anda dapat memeriksa output saat pertama kali memulai" terminal quickstart docker " ini karena alamat ip akan dicatat ke konsol.)

Dengan itu saya dapat menggunakan browser saya seperti biasa, arahkan ke"http://192.168.99.100:8080"dan dapat bekerja dengan webapp saya.

Harapan yang membantu =)


edit

dengan kata file batch sekarang di tangan, satu memiliki 3 pilihan:

  • letakkan file batch di direktori autostart Anda (memerlukan sesi pengguna interaktif, jadi kemungkinan besar tidak cocok untuk instance server..)

  • jadwalkan eksekusi file batch melalui Penjadwal Tugas windows. di sana Anda dapat mengatur "jalankan saat startup komputer" sebagai pemicu tugas. tugas dijalankan terlepas dari sesi interaktif (pengguna yang masuk..) tersedia atau tidak

  • gunakan pembungkus layanan seperti NSSM untuk menginstal file batch sebagai layanan windows

Hanya addon kecil: ketika Anda memulai gambar docker Anda dan ingin mereka mulai saat boot docker (dalam hal ini virtualmachine menjalankan docker) Anda dapat menggunakan opsi --restart always di perintah docker run. Kemudian Anda dapat menghapus perintah docker run dari file batch Anda. Wadah harus dimulai secara otomatis setelah vm dimulai.

Saya telah memperpanjang Charlie Carverjawabannya.

Dengan script berikut Anda dapat menentukan boot2docker peluncuran mesin. Karena folder Docker Toolbox mungkin tidak ada di jalur Anda dan semua variabel lingkungan yang tepat mungkin tidak disetel, saya menulis beberapa instruksi inisialisasi.

Masukkan skrip ini ke dalam file bat dan gunakan salah satu opsi yang dikutip oleh Charlie untuk membuatnya berjalan saat boot.

@echo offREM Set the name of the VM configuration where dockerd will be hostedset BOOT2DOCKER_VM=defaultset PATH=%PATH%;"C:\Program Files\Docker Toolbox\"REM Start the default machine (or any other machine)docker-machine start %BOOT2DOCKER_VM%REM Set the environment variables to use docker-machine and docker commands@FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd %BOOT2DOCKER_VM%') DO @%iREM Start the image detacheddocker run --detach --publish 5000:5000 foo-service

Jika Anda peduli bahwa dalam kasus kesalahan fatal di dalam wadah, silakan gunakan opsi -- restart pada perintah docker run.

Anda juga dapat menggunakan NSSM (non-Sucking Service Manager)

Luncurkan NSSM dari perintah promt atau powershell windows dengan install param (nssm.exe install)

Ini akan meluncurkan GUI, eneter detials berikut;

  • Jalur: [Docker Instal DIR] \ Docker \ sumber daya \ bin \ docker-menulis.exe
  • Direktori Startup: [jalur ke wadah docker Anda]
  • Argumen: argumen apa pun yang Anda butuhkan untuk wadah docker anda (yaitu up)

Akhirnya masukkan nama layanan anda di kotak di bagian bawah GUI, anda dapat merasa bebas untuk menguji dengan opsi lain pada tab tambahan.