Dalam bahagian terjemahan hari ini bagi siri bahan tentang Docker, kita akan bercakap tentang bekerja dengan data. Khususnya, mengenai volum Docker. Dalam bahan ini, kami sentiasa membandingkan mekanisme pengaturcaraan Docker dengan pelbagai analogi yang boleh dimakan. Kami tidak akan menyimpang dari tradisi ini di sini. Biarkan data dalam Docker menjadi rempah ratus. Terdapat banyak rempah ratus di dunia, dan Docker mempunyai banyak cara untuk bekerja dengan data.
Sila ambil perhatian bahawa bahan ini disediakan menggunakan enjin Docker versi 18.09.1 ββdan versi API 1.39.
Data dalam Docker boleh disimpan sama ada secara sementara atau kekal. Mari kita mulakan dengan data sementara.
Penyimpanan data sementara
Terdapat dua cara untuk mengurus data sementara dalam bekas Docker.
Secara lalai, fail yang dibuat oleh aplikasi yang berjalan dalam bekas disimpan dalam lapisan bekas boleh tulis. Agar mekanisme ini berfungsi, tiada apa yang istimewa perlu dikonfigurasikan. Ternyata murah dan ceria. Aplikasi ini hanya perlu menyimpan data dan terus melakukan perkaranya sendiri. Walau bagaimanapun, selepas bekas itu tidak lagi wujud, data yang disimpan dengan cara yang begitu mudah juga akan hilang.
Storan fail sementara dalam Docker ialah penyelesaian lain yang sesuai untuk kes di mana anda memerlukan tahap prestasi yang lebih tinggi daripada yang boleh dicapai menggunakan mekanisme penyimpanan data sementara standard. Jika anda tidak memerlukan data anda disimpan lebih lama daripada bekas yang wujud, anda boleh menyambung ke bekas tmpfs - kedai maklumat sementara yang menggunakan RAM hos. Ini akan mempercepatkan pelaksanaan operasi penulisan dan pembacaan data.
Selalunya berlaku bahawa data perlu disimpan walaupun selepas bekas tidak lagi wujud. Untuk melakukan ini, kami memerlukan mekanisme penyimpanan data yang berterusan.
Penyimpanan data yang berterusan
Terdapat dua cara untuk menjadikan jangka hayat data lebih lama daripada jangka hayat kontena. Satu cara ialah menggunakan teknologi bind mount. Dengan pendekatan ini, anda boleh melekapkan, sebagai contoh, folder kehidupan sebenar pada bekas. Proses di luar Docker juga akan dapat berfungsi dengan data yang disimpan dalam folder sedemikian. begitulah caranya tengok tmpfs mount dan bind mount technology.
Memasang tmpfs dan mengikat pelekap
Kelemahan menggunakan teknologi bind mount ialah penggunaannya merumitkan sandaran data, pemindahan data, perkongsian data antara beberapa bekas. Adalah lebih baik untuk menggunakan volum Docker untuk penyimpanan data yang berterusan.
Docker Jilid
Kelantangan ialah sistem fail yang terletak pada mesin hos di luar bekas. Jilid dicipta dan diurus oleh Docker. Berikut ialah sifat utama jilid Docker:
Mereka adalah cara penyimpanan maklumat yang kekal.
Mereka bebas dan dipisahkan daripada bekas.
Mereka boleh dikongsi antara bekas yang berbeza.
Ia membolehkan anda mengatur pembacaan dan penulisan data yang cekap.
Jumlah boleh diletakkan pada sumber pembekal awan jauh.
Mereka boleh disulitkan.
Mereka boleh diberi nama.
Bekas boleh mengatur pra-populasi volum dengan data.
Mereka mudah untuk diuji.
Seperti yang anda lihat, volum Docker mempunyai sifat yang menakjubkan. Mari kita bercakap tentang cara menciptanya.
Mencipta Jilid
Jilid boleh dibuat menggunakan permintaan Docker atau API.
Berikut ialah arahan dalam Dockerfile yang membolehkan anda membuat volum apabila memulakan bekas.
VOLUME /my_volume
Apabila menggunakan arahan yang serupa, Docker, selepas mencipta bekas, akan mencipta volum yang mengandungi data yang telah wujud di lokasi yang ditentukan. Ambil perhatian bahawa jika anda mencipta volum menggunakan Dockerfile, ini tidak membebaskan anda daripada keperluan untuk menentukan titik lekap kelantangan.
Anda juga boleh membuat volum dalam Dockerfile menggunakan format JSON.
Selain itu, volum boleh dibuat menggunakan alat baris arahan semasa bekas sedang berjalan.
Bekerja dengan volum dari baris arahan
βPenciptaan volum
Anda boleh membuat volum kendiri dengan arahan berikut:
docker volume create β-name my_volume
βKetahui maklumat tentang jilid
Untuk melihat senarai volum Docker, gunakan arahan berikut:
docker volume ls
Anda boleh meneroka volum tertentu seperti ini:
docker volume inspect my_volume
βMemadamkan kelantangan
Anda boleh memadamkan volum seperti ini:
docker volume rm my_volume
Untuk mengalih keluar semua volum yang tidak digunakan oleh bekas, anda boleh menggunakan arahan berikut:
docker volume prune
Sebelum memadamkan volum, Docker akan meminta anda mengesahkan operasi ini.
Jika kelantangan dikaitkan dengan bekas, kelantangan itu tidak boleh dipadamkan sehingga bekas yang sepadan dipadamkan. Pada masa yang sama, walaupun bekas dialih keluar, Docker tidak selalu memahami perkara ini. Jika ini berlaku, anda boleh menggunakan arahan berikut:
docker system prune
Ia direka untuk membersihkan sumber Docker. Selepas melaksanakan arahan ini, anda sepatutnya dapat memadamkan volum yang statusnya tidak betul sebelum ini.
Bendera --mount dan --volume
Untuk bekerja dengan volum, apabila anda memanggil arahan docker, anda selalunya perlu menggunakan bendera. Contohnya, untuk membuat volum semasa pembuatan kontena, anda boleh menggunakan binaan ini:
docker container run --mount source=my_volume, target=/container/path/for/volume my_image
Pada zaman dahulu (sehingga 2017), bendera itu popular --volume. Pada mulanya, bendera ini (ia juga boleh digunakan dalam bentuk yang disingkatkan, kemudian ia kelihatan seperti -v) digunakan untuk bekas kendiri, dan bendera --mount - dalam persekitaran Docker Swarm. Walau bagaimanapun, pada Docker 17.06, bendera --mount boleh digunakan dalam sebarang senario.
Perlu diingatkan bahawa apabila menggunakan bendera --mount jumlah data tambahan yang perlu dinyatakan dalam arahan meningkat, tetapi, atas beberapa sebab, lebih baik menggunakan bendera tertentu ini, dan bukan --volume. Bendera --mount adalah satu-satunya mekanisme yang membolehkan anda bekerja dengan perkhidmatan atau menentukan pilihan pemacu volum. Selain itu, bendera ini lebih mudah digunakan.
Dalam contoh arahan manipulasi data Docker yang sedia ada, anda boleh melihat banyak contoh penggunaan bendera -v. Apabila cuba menyesuaikan arahan ini untuk diri sendiri, perlu diingat bahawa bendera --mount ΠΈ --volume gunakan format parameter yang berbeza. Iaitu, anda tidak boleh hanya menggantikan -v pada --mount dan dapatkan pasukan kerja.
Perbezaan utama antara --mount ΠΈ --volume ialah apabila menggunakan bendera --volume semua parameter dikumpulkan bersama dalam satu medan, dan apabila menggunakan --mount parameter dipisahkan.
Semasa bekerja dengan --mount parameter diwakili sebagai pasangan nilai kunci, iaitu, ia kelihatan seperti key=value. Pasangan ini dipisahkan dengan koma. Berikut ialah pilihan yang biasa digunakan --mount:
type - jenis lekap. Nilai untuk kunci yang sepadan boleh mengikat, jumlah atau tmpfs. Kami bercakap tentang jilid di sini, iaitu, kami berminat dengan nilai volume.
source - sumber lekap. Untuk jilid yang dinamakan, ini adalah nama jilid. Untuk volum tidak dinamakan, kunci ini tidak dinyatakan. Ia boleh dipendekkan kepada src.
destination - laluan ke mana fail atau folder dipasang dalam bekas. Kunci ini boleh dipendekkan kepada dst atau target.
readonly - melekapkan kelantangan yang dimaksudkan hanya untuk bacaan. Penggunaan kunci ini adalah pilihan, dan tiada nilai diberikan kepadanya.
Berikut adalah contoh penggunaan --mount dengan banyak pilihan:
docker run --mount type=volume,source=volume_name,destination=/path/in/container,readonly my_image
Keputusan
Berikut ialah beberapa arahan berguna yang boleh anda gunakan semasa bekerja dengan jilid Docker:
docker volume create
docker volume ls
docker volume inspect
docker volume rm
docker volume prune
Berikut ialah senarai pilihan yang biasa digunakan untuk --mount, terpakai dalam arahan borang docker run --mount my_options my_image:
type=volume
source=volume_name
destination=/path/in/container
readonly
Memandangkan kita telah menyelesaikan siri Docker ini, tiba masanya untuk menyatakan beberapa perkataan tentang tempat pelajar Docker boleh pergi seterusnya. di sini ialah artikel bagus yang bagus tentang Docker. di sini ialah buku tentang Docker (semasa membeli buku ini, cuba dapatkan edisi terbaharunya). di sini ialah satu lagi buku untuk mereka yang berpendapat amalan adalah cara terbaik untuk mempelajari teknologi.
Pembaca yang dihormati! Apakah bahan Docker yang anda cadangkan untuk dipelajari oleh pemula?