‫Baiklah. Volume tampak cukup sederhana di depan, tetapi sebenarnya ada banyak hal.
‫Cara pertama Anda bisa memberi tahu sebuah wadah bahwa ia perlu khawatir tentang volume ada di Dockerfile.
‫Mari kita periksa beberapa di antaranya.
‫Saya hanya akan melakukan apa yang saya lakukan.
‫Saya akan mencari MySQL.
‫Ini adalah bagaimana saya belajar banyak tentang Dockerfiles, dan bagaimana menggunakannya dengan benar, adalah repositori resmi benar-benar
‫memiliki standar suara dan praktik terbaik yang dibangun di dalamnya.
‫Ketika saya pergi ke sini untuk MySQL satu, saya hanya akan mengklik Dockerfile terbaru di sini. Saya yakin Anda karena ini
‫adalah basis data, mungkin ada perintah volume di dalamnya.
‫Itu dia.
‫Ini adalah lokasi default dari database MySQL. Gambar ini diprogram dengan cara memberi
‫tahu Docker bahwa ketika kami memulai wadah baru darinya, untuk benar-benar membuat lokasi volume
‫baru dan menetapkannya ke direktori ini di wadah. Yang berarti file apa pun yang kami tempatkan di sana, dalam wadah, akan
‫bertahan lebih lama dari wadah sampai kami menghapus volume secara manual.
‫Dan itu sesuatu yang harus kita tunjukkan di sini adalah bahwa volume membutuhkan penghapusan manual.
‫Anda tidak dapat membersihkannya hanya dengan mengeluarkan wadah.
‫Mereka langkah ekstra. Itu hanya untuk asuransi, karena inti dari perintah
‫volume adalah untuk mengatakan bahwa data ini sangat penting, setidaknya jauh lebih penting daripada wadah itu sendiri.
‫Jika kita melakukan docker pull di MySQL,
‫dan kemudian saya melakukan docker image memeriksa pada MySQL, kita tidak bisa melihat Dockerfile karena file Docker sebenarnya bukan
‫bagian dari metadata gambar, yang akan Anda perhatikan dalam hal ini area konfigurasi, yang ditentukan volume
‫itu di sana.
‫Saya selalu bisa mengatakan bahwa konfigurasi, yang berasal dari Dockerfile ketika dibangun, memberikan volume ke
‫jalur itu.
‫Mari kita jalankan wadah dari itu.
‫Jadi buruh pelabuhan menjalankan kontainer -d --name mysql.
‫Jika Anda ingat dari sebelumnya, yang MySQL sedikit istimewa.
‫Sekarang membutuhkan variabel lingkungan
‫sebelum akan berfungsi.
‫Ini adalah MYSQL_ALLOW_EMPTY_PASSWORD.
‫BAIK.
‫Apa yang Anda lihat adalah MySQL sedang berjalan. Jika kita melakukan buruh pelabuhan memeriksa
‫mysql, kita harus melihat hal yang sama di mana memberitahu kita di konfigurasi bahwa ada volume.
‫Sini.
‫Kita juga bisa melihatnya di sini di bawah gunung. Apakah ini, apakah ini sebenarnya wadah berjalan yang mendapatkan lokasi
‫uniknya sendiri pada host, untuk menyimpan data itu, dan kemudian di latar belakang, dipetakan atau dipasang, ke lokasi itu dalam wadah, sehingga
‫lokasi dalam wadah sebenarnya hanya berpikir itu menulis ke /
‫var / lib / mysql.
‫Dalam hal ini, kita dapat melihat bahwa data sebenarnya tinggal di lokasi tersebut di host. Jadi mari kita lakukan volume buruh pelabuhan,
‫dan kita dapat
‫melihat bahwa kita memiliki satu volume. Sekarang kita perhatikan ini telah mendapatkan ID unik yang kita tidak akan
‫pernah tahu apa yang terjadi,
‫kan?
‫Jadi, mari kita lakukan inspeksi.
‫Anda tidak perlu mengetik semuanya.
‫Anda cukup mengetik pasangan karakter pertama dan tekan Tab untuk melengkapinya. Anda akan mendapatkan informasi
‫serupa tentang volume itu sendiri.
‫Jika Anda benar-benar melakukan ini pada mesin Linux, Anda dapat menavigasi ke lokasi itu di hard drive
‫Anda dan melihat datanya.
‫Sebenarnya akan ada beberapa database di sana.
‫Jika Anda menggunakan Mac atau Windows, ingatlah bahwa Docker untuk Windows dan Docker untuk Mac
‫sebenarnya melakukan sedikit di latar belakang yang disembunyikan dari kami di mana ia sebenarnya membuat VM Linux.
‫Jadi data ini secara teknis di dalam VM Linux itu. Anda tidak akan dapat pergi ke jalur itu di mesin
‫Windows atau Mac Anda dan melihat datanya. Sebenarnya di dalam VM itu.
‫Kita akan melihat sedikit, dengan volume yang terpasang, bagaimana kita bisa mengatasi batasan itu juga.
‫Dengan melihat ini, Anda melihat bahwa itu tidak sangat ramah pengguna dalam hal memberi tahu kami apa yang
‫ada di dalamnya atau apa volume ini ditugaskan.
‫Kita bisa melihat dari perspektif wadah apa volume yang digunakannya, tetapi kita tidak bisa melihat dari perspektif
‫volume apa itu terhubung.
‫Kanan?
‫Jika saya hanya menekan Panah Atas dan, mari kita lihat, buat mysql2.
‫Itu sekarang menciptakan server MySQL lain yang berjalan di latar belakang.
‫Jika saya melakukan volume buruh pelabuhan lain, Anda akan melihat dua dari mereka.
‫Anda mulai melihat masalahnya, bukan?
‫Tidak ada cara mudah di sini untuk membedakan satu dari yang lain.
‫Jika kita hanya ingin membuktikan suatu hal, lakukan sebuah docker container stop mysql, dan docker a container stop
‫mysql2.
‫Kami melakukan kontainer buruh pelabuhan, kami tidak akan melihat kontainer berjalan. Jika kita melakukan ls-a, kita
‫bisa melihat semuanya. Dan perhatikan bahwa mereka dihentikan. Dan kemudian kita lakukan volume buruh pelabuhan, Anda
‫perhatikan kami masih memiliki dua volume.
‫Jika saya melakukan kontainer buruh pelabuhan rm mysql, dan kemudian mysql2, karena saya benar-benar dapat melakukan keduanya dalam
‫satu perintah, itu akan menghapus kedua kontainer saya. Jika saya sekarang melakukan volume buruh pelabuhan, volume
‫saya masih ada. Data saya masih aman.
‫Jadi, kami telah memecahkan satu masalah.
‫Database hidup lebih lama dari executable.
‫Bagaimana kita menjadikan ini sedikit lebih ramah pengguna?
‫Di situlah volume bernama masuk dan kemampuan bagi kita untuk menentukan hal-hal pada perintah
‫run docker.
‫Jika saya menekan Panah Atas beberapa kali hingga saya mencapai penampung kontainer, tidak terlalu penting yang mana yang
‫akan Anda jalankan lagi.
‫Dalam hal ini, kita akan benar-benar melakukan perintah -v. A -v memungkinkan kita untuk menentukan volume baru
‫yang ingin kita buat untuk wadah ini yang akan dijalankan, atau memungkinkan kita dua opsi
‫lain.
‫Salah satunya di sini adalah membuat volume bernama.
‫Jika saya hanya melakukan -v, dan kemudian var lib mysql, itu akan melakukan hal yang sama dengan apa yang dilakukan
‫oleh perintah volume kami di Dockerfile.
‫Kami tidak perlu melakukannya di sini. Tapi yang bisa kita lakukan adalah saya bisa meletakkan nama di depannya
‫dengan tanda titik dua. Itu dikenal sebagai "volume bernama. "Ketika saya
‫melakukan itu, dan kemudian melakukan volume buruh pelabuhan, Anda akan melihat bahwa wadah baru saya menggunakan volume baru dan menggunakan
‫nama yang ramah.
‫Jika kami melakukan volume buruh pelabuhan memeriksa mysql itu, Anda akan melihat bahwa ini lebih mudah digunakan di sini.
‫Jika saya menghapus wadah saya lagi, dan kita harus meletakkan -f
‫karena masih berjalan, dan kemudian saya menjalankan yang lain. Dan kali ini, saya akan memberikan
‫nama yang berbeda. Dan kemudian kita lakukan volume buruh pelabuhan lain, Anda akan
‫melihat bahwa sepertinya kami belum membuat volume baru. Masih menggunakan volume yang sama.
‫Mari kita lakukan inspeksi buruh pelabuhan pada mysql3. Lalu apa yang akan kita lihat di sini adalah, ya,
‫ini yang sudah dikonfigurasikan tapi apa yang kita jalankan?
‫Ini tunggangan kami di sini.
‫Kita akan lihat di sini bahwa tidak hanya nama yang lebih ramah, tetapi juga mengubah lokasi sumber
‫menjadi sedikit lebih ramah.
‫Bagi saya, sedikit tip di sini adalah bahwa ketika saya menjalankan selama berhari-hari atau berminggu-minggu pada suatu waktu, pada basis data
‫tertentu, dalam wadah tertentu yang harus saya gunakan berulang kali dan saya tidak ingin
‫server database kosong, Saya akan akhirnya membuat wadah saya dengan cara ini dan memberi nama mereka untuk proyek sehingga saya tahu untuk
‫apa volume itu,
‫dan bahwa itu perlu bertahan.
‫Satu hal terakhir di sini.
‫Mengapa Anda ingin membuat volume buruh pelabuhan?
‫Jika kita dapat membuatnya dari perintah menjalankan wadah buruh pelabuhan saat runtime, dan kita dapat membuatnya dengan menentukannya di Dockerfile, hanya ada beberapa kasus
‫di mana Anda ingin membuatnya terlebih dahulu. Dan Anda benar-benar dapat
‫mengetahuinya dengan cepat menggunakan perintah bantuan.
‫Karena inilah satu-satunya cara kita benar-benar dapat menentukan driver yang berbeda.
‫Ingat hal-hal plug-in yang akan saya bicarakan nanti?
‫Kemudian semua opsi driver yang ingin kita gunakan -o on.
‫Kemudian jika kita ingin memberi label, yang juga akan kita bicarakan nanti di bagian produksi.
‫Kadang-kadang, dalam kasus khusus, Anda perlu membuat volume Docker sebelumnya, tetapi biasanya untuk tujuan pengembangan lokal
‫Anda, cukup menentukannya di Dockerfile atau saat menjalankan perintah baik-baik saja.