Belajar Docker, Bahagian 6: Bekerja dengan Data

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.

β†’ Bahagian 1: Asas
β†’ Bahagian 2: istilah dan konsep
β†’ Bahagian 3: Dockerfiles
β†’ Bahagian 4: Mengurangkan saiz imej dan mempercepatkan pemasangannya
β†’ Bahagian 5: arahan
β†’ Bahagian 6: bekerja dengan data

Belajar Docker, Bahagian 6: 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.

Belajar Docker, Bahagian 6: Bekerja dengan Data
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?

Belajar Docker, Bahagian 6: Bekerja dengan Data

Sumber: www.habr.com

Tambah komen