Docker / Windows Container: cara memasang folder host sebagai volume data pada Windows 2016

17

Bagaimana cara memasang volume dari host Windows ke sistem tamu Windows?

Saya di Windows Server 2016 TP4 menggunakan Docker.

Mengikuti dokumentasi di https://docs.docker.com/engine/userguide/containers/dockervolumes/

Jika Anda menggunakan Mesin Docker di Mac atau Windows, daemon Docker Anda hanya memiliki akses terbatas ke sistem file OS X atau Windows Anda. Mesin Docker mencoba untuk secara otomatis membagikan direktori / Users (OS X) atau C: \ Users (Windows) Anda. Jadi, Anda dapat memasang file atau direktori pada OS X menggunakan.

Di Windows, pasang direktori menggunakan:

run docker -v / c / Users / [path]: / [path kontainer] ... `

Saya mencoba:

docker run --name iisdemo2 -it -p 80:80 -v /c/Users/mlin/meinedaten:/meinedaten iis cmd

yang memberi saya kesalahan:

docker : docker: Error response from daemon: Invalid bind mount spec "/c/Users/mlin/meinedaten:/meinedaten": volumeinvalid: Invalid volume specification: 
'/c/Users/mlin/meinedaten:/meinedaten'.

Saya juga mencoba:

docker run --name iisdemo2 -it -p 80:80 -v /c/Users/mlin/meinedaten:/c/meinedaten iis cmd

Perhatikan bahwa jalur C: \ meinedaten pada guest / container sudah ada, yang diperlukan sesuai dengan dokumentasi buruh pelabuhan.

Perintah itu terlihat benar bagi saya sesuai dengan dokumentasi.

masukkan deskripsi gambar di sini

(Volume pemasangan dari host Mac OS X ke wadah buruh pelabuhan Ubuntu berfungsi dengan baik, saya hanya mengalami masalah dengan Windows.)

Memperbarui

Saya juga baru mencoba menggunakan Windows Containers secara asli (via Powershell), tidak menggunakan Docker. Saya mengikuti dokumentasi di https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/manage_powershell#create-a- Shared-folder .

Add-ContainerSharedFolder -ContainerName mysql2 -SourcePath C:\Users\mlin\meinedaten -DestinationPath C:\meinedaten

Tapi saya juga mendapat masalah.

masukkan deskripsi gambar di sini

Topik yang terkait akhirnya:

Mathias Conradt
sumber

Jawaban:

22

Di Windows, lintasan harus ditentukan menggunakan semantik gaya Windows. Anda tidak harus menggunakan garis miring di depan jalan.

docker run -v c:\Users\[path]:c:\[containerPath]
Mathias Conradt
sumber
Ini tidak berfungsi jika Anda membuat folder dengan salinan atau perintah tambahan.
Steve Coleman
dir host dapat juga relatif "./" dan os internal tamu mungkin adalah tipe linux os sehingga jalur linux reguler "/ a / b / c /" seperti, di buruh pelabuhan menulis dengan cara ini `volume: - ./:/var / www / html`
FantomX1
7

Pembaruan Peringatan 10 Tahun Windows dan Windows Server 2016 RTM.

Tambahkan volume:

docker run -d -v my-named-volume:C:\MyNamedVolume testimage:latest

Pasang direktori host:

docker run -d -v C:\Temp\123:C:\My\Shared\Dir testimage:latest
Der_Meister
sumber