Pemahaman saya adalah bahwa batasan utama menjalankan buruh pelabuhan pada OS lain adalah wadah Jaringan Linux yang memungkinkan. (Pasti untuk Mac).
Baru-baru ini Microsoft mengumumkan versi beta dari mode pengguna linux Ubuntu yang berjalan secara native di Windows 10. Ini dapat menjalankan binari yang dikompilasi dalam format ELF pada Windows (tidak seperti cygwin yang membutuhkan kompilasi.)
Pertanyaan saya adalah: Dapatkah Anda menjalankan Docker secara native di bash userspace Windows 10 (Ubuntu) yang baru?
bash
pengguna. Ini adalah ruang pengguna Linux yang nyata dan cukup lengkap, tetapi tanpa X Windows hanya teks. Mengatakan "bash" mengkomunikasikan batasan teks saja dengan cukup baik ..Jawaban:
Anda dapat menggunakan Docker Desktop untuk Windows sebagai mesin dan Docker untuk Linux sebagai klien di WSL di Ubuntu / Debian di Windows. Hubungkan mereka melalui TCP.
Instal Docker Desktop untuk Windows: https://hub.docker.com/editions/community/docker-ce-desktop-windows Jika Anda ingin menggunakan Windows Containers dan bukan Linux Containers, kedua jenis container dapat dikelola oleh klien docker Linux di bash userspace.
Sejak versi 17.03.1-ce-win12 (12058) Anda harus memeriksa Expose daemon di tcp: // localhost: 2375 tanpa TLS untuk memungkinkan klien Linux Docker untuk terus berkomunikasi dengan daemon Windows Docker oleh TCP
Ikuti langkah ini:
atau
Untuk membuatnya permanen:
Tambahkan variabel yang sesuai ke .bashrc
Tentu saja, Anda dapat menginstal buruh pelabuhan
Atau menggunakan pip python
Dan selesai Bash. Bagian terbaik:
Saya sudah mengujinya menggunakan versi Docker Desktop versi 2.1.0.1 (37199) menggunakan Hyper-V:
Volume
Hati-hati saat menambahkan volume. Path
C:\dir
akan terlihat seperti/mnt/c/dir
pada WSL dan seperti/c/dir/
oleh mesin buruh pelabuhan. Anda dapat mengatasinya secara permanen:Anda harus keluar dan memuat ulang WSL setelah melakukan perubahan ke wsl.conf sehingga WSL membaca perubahan Anda saat peluncuran.
MEMPERBARUI
dari: Apa yang baru untuk Command Line di Windows 10 versi 1803
MEMPERBARUI
Script ini dan penggunaan Unix Socket termasuk dalam Pengwin pengwin-pengaturan 's.
Salam
sumber
docker.exe
langsung untuk permintaan / interaksi subsistem buruh pelabuhan. Namun, perhatikan bahwa buruh pelabuhan untuk windows akan menggunakan variabel dan konfigurasi windows.Sampai sekarang (April 2016) jawabannya adalah:
Kami belum tahu (tapi mungkin tidak).
Fakta-fakta
Spekulasi
Jadi pertanyaannya adalah apakah syscall yang dibutuhkan Docker (untuk chroot dan ruang nama, antara lain) diimplementasikan atau tidak. Jawabannya adalah kemungkinan itu "tidak". Docker membutuhkan fungsionalitas yang cukup canggih (dan spesifik Linux) untuk manajemen proses dan sumber daya, serta isolasi proses. Meskipun mungkin untuk mereplikasi semua ini di Windows, itu akan menjadi banyak pekerjaan, dan karena tujuan dari fitur Windows ini tampaknya menjalankan program-program Linux userspace, tampaknya tidak mungkin mereka melakukan semua pekerjaan (dan merahasiakannya) .
Namun, tidak ada informasi pasti, sejauh yang saya tahu.
Port Docker yang ada
Tentu saja, jika Microsoft memutuskan mereka menginginkan dukungan Docker di Windows 10, mereka mungkin akan dapat menawarkannya. Ada beberapa preseden untuk porting Docker ke kernel yang berbeda:
sumber
Pratinjau orang dalam pertama dirilis kemarin. Saya sudah mencoba memasang buruh pelabuhan tetapi gagal dengan yang berikut ini:
Maka akan muncul, bahwa untuk pratinjau pertama itu tidak berfungsi. Namun karena banyak orang berspekulasi, ini mungkin berhasil dalam rilis mendatang.
sumber
docker ps
gagal dengan:Get http:///var/run/docker.sock/v1.18/containers/json: dial unix /var/run/docker.sock: setsockopt: invalid argument. Are you trying to connect to a TLS-enabled daemon without TLS?
Tidak, ini tidak mungkin.
Docker membutuhkan banyak hal untuk menjalankan kontainer:
Ini semua adalah fitur kernel yang diimplementasikan di Linux. Sayangnya, kebanyakan dari mereka tidak memiliki fitur serupa di Windows untuk digunakan sebagai pengganti (atau dalam Subsistem Linux yang diimplementasikan oleh Microsoft dalam kernel Windows). Semua ini perlu disediakan oleh OS.
sumber
chroot
, sadarilah bahwa lingkungan Ubuntu sudah memiliki root yang berbeda dari yang WIN32.Pada Pembaruan Creator (dirilis secara publik pada 13 Juni 2017) Anda dapat menjalankan Windows asli yang dapat dieksekusi langsung di WSL. Ini berarti jika Anda sudah menginstal Docker untuk Windows, Anda cukup memanggil
docker
binari yang terinstal di bawahC:\Program Files
. Karena mereka berakhir pada.exe
pilihan termudah adalah membuat alias. Sesuatu seperti yang berikut ini di Anda.bashrc
harus berfungsi:Ini membuat alias untuk semua file di
DOCKER_BIN
direktori:Satu peringatan: Anda akan mendapatkan pesan kesalahan seperti " Tidak dapat menerjemahkan direktori kerja saat ini " jika dijalankan dari direktori Linux. Masuk
cd
ke direktori Windows (mis./mnt/c/Users/YourUsername
) Dan Anda harus baik.sumber
docker
binari Windows , dan melakukannya melalui shell Linux. Saya tidak yakin apakah ada cara yang baik untuk mencapai itu.Setelah Docker 1.12 dirilis dan klien Linux Docker dipisahkan, Anda harus dapat menjalankan klien docker di bash Windows 10.
Ini mungkin kedengarannya tidak banyak mengingat Anda memiliki klien Docker Windows, tetapi itu berguna jika Anda memiliki rantai alat Linux yang menyertakan buruh pelabuhan untuk fungsionalitas sisi kliennya.
sumber
Di Windows 10 Versi 1607 Build 1493.10 Anda berhasil menginstalnya di Ubuntu Bash, tetapi tidak berhasil :(
"Versi buruh pelabuhan" yang sederhana akan memberi tahu Anda:
Jika Anda menjalankan "sudo docker -d" Anda mendapatkan kesalahan berikut:
Jadi ini jelas merupakan stopper dari sisi bash.
Namun demikian, Anda dapat menginstal Docker untuk Windows dan berfungsi seperti pesona, Anda jelas dapat menggunakan Server Linux dan semua yang Anda butuhkan.
sumber
Per September 2016, No.
Semua implementasi Docker saat ini di Windows menggunakan virtualisasi, Docker 1.12 menggunakan hypervisor di Windows -yaitu menghapus keuntungan dari kontainerisasi daripada virtualisasi.
Docker membutuhkan lebih dari sekadar menggunakan panggilan sistem Linux.
Dibutuhkan kelompok kontrol proses (cgroups), sistem file stackable (aufs), plus sistem berbasis Linux lain di luar kernel.
Baik cgroups maupun aufs tidak ada di kernel Windows 10.
Ada implementasi Windows Server 2016 di sini: https://msdn.microsoft.com/en-gb/virtualization/windowscontainers/quick_start/quick_start_windows_server .. tetapi ini hanya akan menjalankan beberapa layanan Windows, misalnya IIS, dan bukan Ubuntu
sumber
Docker saat ini tidak berfungsi di build saat ini (14316) - dengan asumsi Anda dapat menginstalnya.
sumber
Dari: https://blog.docker.com/2016/07/docker-for-mac-and-windows-production-ready/
sumber