Volume Docker adalah cara yang lebih disukai untuk menangani data persisten yang dibuat oleh dan digunakan oleh container Docker. Mari kita lihat cara kerjanya dengan membahas cara membuat volume Docker di Windows. Anda juga akan belajar cara mengelolanya!
Pos blog ini memiliki video pendamping yang dibuat oleh kontributor TechSnips, Matt McElreath. Silakan menonton atau, jika Anda lebih suka teks, baca terus!
Menyimpan Data Persisten
Jika Anda ingin menyimpan data persisten untuk container, ada beberapa opsi. Pertama, saya akan menunjukkan cara menggunakan bind mount . Saat ini saya berada di folder bernama data di C:\ . saya . Jika saya mencantumkan isi folder ini, Anda dapat melihat bahwa saya memiliki lima file teks.

Jika saya ingin membuat folder ini tersedia untuk wadah, saya dapat memasangnya saat memulai wadah.
Ayo jalankan container menggunakan docker run
. Saya akan menjalankan wadah ini dalam mode interaktif, lalu tentukan -V
. Di sini, saya akan meletakkan path ke folder data saya, diikuti dengan titik dua, lalu saya akan menentukan path di dalam wadah tempat saya ingin folder ini dipasang.
Untuk ini, saya akan menentukan C:\shareddata map. Kemudian saya akan menentukan gambar inti server Windows dan akhirnya, saya akan menentukan bahwa saya ingin menjalankan PowerShell setelah saya berada di dalam wadah.
docker run -it -v c:\Data:c:\shareddata microsoft/windowsservercore powershell
Sekarang saya berada di dalam wadah baru, jika saya mencantumkan konten C:\ , Anda dapat melihat bahwa saya memiliki data bersama folder.

Mari masuk ke folder itu dan daftar isinya. Berikut adalah lima file pengujian saya yang berada di host container saya.

Saya juga dapat membuat file di folder ini, yang akan tersedia untuk container lain atau host container saya. Mari kita lanjutkan dan jalankan item baru untuk membuat file bernama containertest .

Kita dapat melihat di atas bahwa file baru telah dibuat dari dalam wadah. Sekarang saya akan keluar dari wadah ini yang akan mematikannya dengan menjalankan exit
.
Jika saya menjalankan docker ps
, Anda dapat melihat bahwa saat ini tidak ada container yang berjalan.

Mencacah Data dalam Volume Docker
Sekarang mari buat daftar isi folder data lagi dari host container saya.

Kita dapat melihat file baru yang dibuat dari dalam container bernama containertest . Bind mount memiliki beberapa fungsi terbatas, jadi volume adalah cara yang lebih disukai untuk mencapai apa yang kami coba lakukan. Untuk memulai dengan volume, kita dapat menjalankan perintah yang sama untuk memulai container, tetapi kali ini dengan beberapa perbedaan kecil. Di mana kami menentukan volume, alih-alih menggunakan jalur pada sistem file host penampung, saya akan menggunakan kata hostdata sebagai nama volume yang ingin saya buat dan gunakan.
Dari dalam wadah baru, jika saya mencantumkan isi C:\ , Anda dapat melihat lagi bahwa saya memiliki folder bernama shareddata .

Jika saya mencantumkan isi folder itu, saat ini kosong karena kami membuat volume kosong. Sekarang mari kita jalankan Ctrl-P-Q yang akan mengeluarkan kita dari penampung yang sedang berjalan, tetapi tetap menjalankannya di latar belakang.
Dari host penampung, jalankan docker volume ls
. Ini akan mencantumkan volume saat ini di host penampung ini. Saya memiliki volume yang disebut hostdata , yang dibuat ketika saya menentukannya di docker run
perintah.

Jika saya menjalankan docker ps
kita bisa melihat wadah berjalan kita.

Hentikan kontainer itu menggunakan docker stop
. Sekarang kami tidak memiliki container yang berjalan.

Hapus wadah yang dihentikan dengan menjalankan docker rm
. Jika saya daftar volume lagi, Anda dapat melihat bahwa hostdata volume masih tersedia dan dapat dipasang ke wadah baru.

Membuat Volume Docker
Cara lain untuk membuat volume adalah dengan menggunakan docker volume create
memerintah. Jika Anda tidak menentukan nama, buruh pelabuhan akan memberinya nama yang merupakan daftar panjang karakter acak. Jika tidak, Anda dapat menentukan nama di sini. Saya akan memanggil volume ini logdata . Sekarang kita dapat melihatnya ada dalam daftar ketika kita membuat daftar volume lagi.

Anda sekarang akan memasangnya ke wadah baru. Gunakan docker run
lagi dan untuk volume tentukan volume yang baru saja dibuat dan pasang ke c:\logdata .
> docker run -it -v logdata:c:\logdata microsoft/windowsservercore powershell
Dari dalam wadah, masuk ke logdata folder dan membuat beberapa file. Saat ini, tidak ada file dalam direktori ini, jadi lanjutkan dan buat beberapa file.
PS> New-Item -Name Log1.txt -ItemType File
PS> New-Item -Name Log2.txt -ItemType File
Sekarang saya memiliki dua file log di direktori ini.

Jalankan Ctrl-P-Q lagi untuk keluar dari wadah ini saat masih berjalan. Saat penampung itu berjalan, mulai penampung baru dengan volume yang sama terpasang.
> docker run -it -v logdata:c:\logdata microsoft/windowsservercore powershell
Jika kami menjalankan daftar di logdata folder di wadah baru kita dapat melihat dua file log dibagikan.

Sekarang, keluar dari wadah ini. Anda masih harus memiliki satu kontainer berjalan dan dua kontainer keluar.

Sekarang hentikan semua container yang sedang berjalan, lalu jalankan docker rm
untuk menghapus semua wadah yang keluar.

Daftar volume lagi. data log volume masih tersedia untuk dipasang ke kontainer mendatang.

Jika Anda menjalankan docker volume
, Anda akan mendapatkan bantuan penggunaan untuk perintah tersebut.

Memeriksa Volume Docker
Kita sudah melihat create
, jadi mari kita beralih ke inspect
. Jika saya menjalankan docker volume inspect
terhadap logdata volume, ini akan mengembalikan properti untuk volume tersebut, termasuk titik pemasangan yang merupakan jalur fisik ke volume pada host penampung.

Mari kita buka folder itu menggunakan Invoke-Item
dan lihatlah. Di bawah logdata folder, ada folder bernama data . Jika kita membukanya, kita bisa melihat file-file yang dibuat dari container tadi.

Menghapus Volume Docker
Untuk menghapus volume, kita dapat menjalankan docker volume rm
, diikuti dengan nama volume yang ingin Anda hapus.
> docker volume rm logdata
Sekarang jika saya membuat daftar volume, logdata sudah tidak ada lagi.

Terakhir, kita dapat menggunakan prune
untuk menghapus semua volume lokal yang tidak digunakan. Ini akan menghapus semua volume yang tidak dipasang ke penampung yang sedang berjalan atau berhenti.

Anda ingin berhati-hati dengan perintah ini, jadi ada peringatan dan prompt untuk memastikan bahwa Anda yakin ingin melakukan ini. Jika saya mengetik Y
dan tekan enter, itu akan menunjukkan kepada saya volume mana yang dihapus.
Dan jika saya mencantumkan volume saya lagi, Anda dapat melihat bahwa semuanya telah dihapus.

Ringkasan
Dalam posting blog ini, Anda seharusnya mendapatkan gambaran yang baik tentang mengelola volume Docker di Windows. Docker adalah platform wadah yang hebat. Dengan dukungannya untuk Windows dan keterampilan baru Anda dalam mengelola volume Docker, Anda tidak akan terhentikan!