Rumah Operasi dan penyelenggaraan Docker Apakah cara penyimpanan buruh pelabuhan?

Apakah cara penyimpanan buruh pelabuhan?

Feb 08, 2022 pm 04:55 PM
docker

Docker mempunyai empat kaedah penyimpanan: 1. "Storan lalai", data disimpan dalam bekas yang sedang dipadamkan, data juga dipadamkan; 3. "bind mounts mount", pasang terus mana-mana direktori atau fail dalam sistem fail hos;

Apakah cara penyimpanan buruh pelabuhan?

Persekitaran pengendalian tutorial ini: sistem linux5.9.8, versi docker-1.13.1, komputer Dell G3.

Beberapa kaedah penyimpanan bekas docker

Storan kontena boleh dibahagikan kepada dua kategori utama:

Satunya berkaitan dengan pencerminan, iaitu ciri Copy-On-Write lapisan kontena yang kami nyatakan dalam artikel "Asas Teknologi Kontena Docker: OverlayFS Sistem Fail Bersama". Secara lalai, semua fail yang dibuat dalam bekas disimpan pada lapisan bekas boleh tulis Kaedah menyimpan fail secara langsung pada lapisan bekas ini menjadikan data sukar untuk disimpan dan dikongsi kerana pergantungan pada pemacu storan dan penggunaan penulisan terus kepada hos. Sistem fail tambahan ini mengurangkan prestasi berbanding volum data.

Yang lain ialah storan hos, yang digunakan dengan mengikat atau menggantung direktori hos ke dalam bekas. Data boleh dikekalkan walaupun selepas bekas dihentikan. Terutamanya memperkenalkan yang terakhir.

Beberapa kaedah pelekap storan

Di sini kami melukis rajah berikut berdasarkan lokasi berbeza di mana data disimpan pada hos Docker:

Apakah cara penyimpanan buruh pelabuhan?

Docker mempunyai empat kaedah storan: lalai, volum data volum, bind mount dan tmpfs mount (hanya tersedia dalam persekitaran Linux), yang volum dan bind mount melaksanakan data bekas yang berterusan.

1. Storan lalai

Data disimpan dalam bekas yang sedang dijalankan Selepas bekas dipadamkan, data juga akan dipadamkan

2. pelekap bind

pelekap bind mempunyai fungsi terhad berbanding volum. Apabila menggunakan bind mount, fail atau direktori pada hos dipasang ke dalam bekas. Fail atau direktori dirujuk oleh laluan penuhnya pada hos. Direktori tidak perlu sudah wujud pada hos Docker Jika ia tidak wujud, Docker akan menciptanya untuk kami. Ambil perhatian bahawa hanya direktori boleh dibuat secara automatik.

Kami menggunakan pilihan -v untuk mengikat dan melekapkan direktori /nginx/html ke dalam bekas dan lihat

docker run -dt -v /nginx/html:/usr/share/nginx/html --name nginx nginx
Salin selepas log masuk

Lihat medan Pemasangan kontena melalui docker inspect nginx

"Mounts": [
    {
        "Type": "bind",
        "Source": "/nginx/html",
        "Destination": "/usr/share/nginx/html",
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    }
],
Salin selepas log masuk

Kemudian kami mencipta index.html pada hos docker dan menulis hello nginx, dan kemudian mengakses IP kontena Jelas sekali pelekap kami telah berkuat kuasa.

[root@localhost ~]# echo "hello nginx" >  /nginx/html/index.html
[root@localhost ~]# curl 172.17.0.4
hello nginx
Salin selepas log masuk

Terdapat masalah di sini. Kami boleh mengubah suai fail melalui hos docker untuk menjadikan fail dalam bekas itu berkesan pada sistem fail hos. Untuk menangani masalah ini, kami boleh mengkonfigurasi kebenaran direktori pelekap semasa mencipta bekas, seperti kebenaran baca sahaja berikut:

docker run -dt -v /nginx/html:/usr/share/nginx/html:ro --name nginx nginx
Salin selepas log masuk

Jadi apabila kami menggunakan bind mount, anda mengendalikan hos Sistem fail, anda mesti mengetahui perkara berikut:

Apakah kandungan yang terkandung dalam direktori yang anda lekapkan untuk mengelak daripada menjejaskan aplikasi lain.

Sama ada bekas anda sepatutnya mempunyai kebenaran untuk beroperasi pada direktori ini.

3. volumes volum data

Volume storan volum dicipta dan diurus oleh Docker Kita boleh menggunakan docker volume create command untuk mencipta volum secara eksplisit atau menciptanya isipadu bekas dibuat.

[root@localhost ~]# docker volume create nginx_volume
nginx_volume
[root@localhost volumes]# docker inspect  nginx_volume
[
    {
        "CreatedAt": "2021-08-12T01:58:04-04:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/nginx_volume/_data",
        "Name": "nginx_volume",
        "Options": {},
        "Scope": "local"
    }
]
Salin selepas log masuk

Anda boleh melihat bahawa titik pelekap berada di bawah direktori akar docker /var/lib/docker/volumes

Kosongkan volum tunggal atau semua yang tidak digunakan melalui volum docker rm/prune , yang dapat untuk menguruskan volum melalui arahan docker adalah kelebihan berbanding bind mounts.

[root@localhost ~]# docker volume ls
DRIVER    VOLUME NAME
local     owncloud-docker-server_files
local     owncloud-docker-server_mysql
local     owncloud-docker-server_redis
[root@localhost ~]# docker volume prune
WARNING! This will remove all local volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Volumes:
owncloud-docker-server_files
owncloud-docker-server_mysql
owncloud-docker-server_redis

Total reclaimed space: 199.4MB
Salin selepas log masuk

Jika sumber pelekap bekas tidak dinyatakan semasa membuat bekas, docker akan secara automatik mencipta volum tanpa nama untuk kami, juga terletak dalam direktori root docker.

[root@localhost volumes]# docker run -dt -v /usr/share/nginx/html --name nginx_with_volume nginx
d25bdfce9c7ac7bde5ae35067f6d9cf9f0cd2c9cbea6d1bbd7127b3949ef5ac6
[root@localhost volumes]# docker volume ls 
DRIVER    VOLUME NAME
local     d8e943f57d17a255f8a4ac3ecbd6471a735aa64cc7a606c52f61319a6c754980
local     nginx_volume
[root@localhost volumes]# ls /var/lib/docker/volumes/
backingFsBlockDev  d8e943f57d17a255f8a4ac3ecbd6471a735aa64cc7a606c52f61319a6c754980  metadata.db  nginx_volume
Salin selepas log masuk

Selepas kami mencipta volum pelekap, storan pada masa ini konsisten dengan pelekap bind Walau bagaimanapun, apabila hos docker tidak dapat menjamin untuk mempunyai direktori atau struktur fail tertentu, volum boleh membantu kami menukar hos docker ke Konfigurasi dipisahkan daripada masa jalan kontena. Dengan cara ini, apabila kita perlu membuat sandaran, memulihkan atau memindahkan data daripada satu hos Docker ke hos yang lain, volumnya sangat mudah dan boleh diasingkan daripada sekatan laluan hos.

Apabila menggunakan pelekap dan volum bind, kita harus memberi perhatian kepada prinsip liputan perambatan berikut:

Apakah cara penyimpanan buruh pelabuhan?

Apabila memasang volum kosong: kandungan direktori dalam bekas itu disebarkan (disalin) kepada kelantangan.

Apabila mengikat volum yang dipasang atau tidak kosong: kandungan direktori dalam bekas akan ditimpa oleh volum atau direktori hos terikat.

4.tmpfs mount

tmpfs mount hanya terpakai kepada hos linux Apabila kita menggunakan tmpfs mount untuk mencipta bekas, bekas itu boleh berada dalam lapisan boleh tulis bekas itu. Simpan data dalam ingatan dan apabila bekas dihentikan, data bertulis juga akan dialih keluar. Digunakan terutamanya untuk penyimpanan sementara fail sensitif yang anda tidak mahu kekal dalam hos atau lapisan boleh tulis bekas.

Lekapkan blok memori melalui pilihan --tmpfs.

docker run -dt --name busybox_tmpfs --tmpfs /etc/running busybox
Salin selepas log masuk

Letakkan parameter dalam mod --mount untuk menentukan saiz storan sementara.

docker run -dt --name busybox_tmpfs2 --mount type=tmpfs,tmpfs-size=2048,destination=/etc/running busybox
Salin selepas log masuk

Perkongsian data storan

在容器之间共享数据主要有两种方法,第一种比较简单,只需要将目录或者volume挂载到多个容器中即可。这里不做赘述,我们来看一下通过中间容器实现共享的方式。

我们创建一个中间容器,包含绑定挂载目录和一个卷。

docker create -v /share:/volume1 -v /volume2  --name volume_share  busybox
Salin selepas log masuk

在我们需要共享的容器中通过选项--volumes-from拿过来用即可

docker run -d -t --volumes-from volume_share  --name container1  busybox
Salin selepas log masuk

我们inspect检查一下Mounts字段,此时container1已经挂载到了一个bind目录和一个volume

"Mounts": [
    {
        "Type": "bind",
        "Source": "/share",
        "Destination": "/volume1",
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    },
    {
        "Type": "volume",
        "Name": "21605e49a0ba90a1b952a32c1b3f0d42735da8bfe718f0dc76c37e91f1e51c0e",
        "Source": "/var/lib/docker/volumes/21605e49a0ba90a1b952a32c1b3f0d42735da8bfe718f0dc76c37e91f1e51c0e/_data",
        "Destination": "/volume2",
        "Driver": "local",
        "Mode": "",
        "RW": true,
        "Propagation": ""
    }
],
Salin selepas log masuk

推荐学习:《docker视频教程

Atas ialah kandungan terperinci Apakah cara penyimpanan buruh pelabuhan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara Membaca Versi Docker Cara Membaca Versi Docker Apr 15, 2025 am 11:51 AM

Untuk mendapatkan versi Docker, anda boleh melakukan langkah -langkah berikut: Jalankan arahan Docker "Docker -version" untuk melihat versi klien dan pelayan. Untuk MAC atau Windows, anda juga boleh melihat maklumat versi melalui tab versi Docktop GUI atau menu desktop Docker.

Cara membuat cermin di Docker Cara membuat cermin di Docker Apr 15, 2025 am 11:27 AM

Langkah -langkah untuk membuat imej Docker: Tulis Dockerfile yang mengandungi arahan membina. Bina imej di terminal, menggunakan arahan membina Docker. Tag imej dan tetapkan nama dan tag menggunakan arahan tag docker.

Cara menggunakan desktop docker Cara menggunakan desktop docker Apr 15, 2025 am 11:45 AM

Bagaimana cara menggunakan desktop Docker? Docktop Docktop adalah alat untuk menjalankan bekas Docker pada mesin tempatan. Langkah -langkah untuk digunakan termasuk: 1. Pasang desktop Docker; 2. Mulakan desktop Docker; 3. Buat imej Docker (menggunakan Dockerfile); 4. Membina imej Docker (menggunakan Docker Build); 5. Jalankan bekas Docker (menggunakan Docker Run).

Cara mengemas kini imej Docker Cara mengemas kini imej Docker Apr 15, 2025 pm 12:03 PM

Langkah -langkah untuk mengemas kini imej Docker adalah seperti berikut: Tarik tag imej terkini imej baru memadam imej lama untuk tag tertentu (pilihan) mulakan semula bekas (jika diperlukan)

Cara Mengubah Sumber Imej Docker di China Cara Mengubah Sumber Imej Docker di China Apr 15, 2025 am 11:30 AM

Anda boleh beralih ke sumber cermin domestik. Langkah -langkah adalah seperti berikut: 1. Edit fail konfigurasi /etc/docker/daemon.json dan tambahkan alamat sumber cermin; 2. Selepas menyimpan dan keluar, mulakan semula perkhidmatan Docker Sudo SystemCtl Docker untuk meningkatkan kelajuan muat turun dan kestabilan imej.

Cara Menyelamatkan Gambar Docker Cara Menyelamatkan Gambar Docker Apr 15, 2025 am 11:54 AM

Untuk menyimpan imej di Docker, anda boleh menggunakan arahan Docker Commit untuk membuat imej baru, yang mengandungi keadaan semasa bekas yang ditentukan, Sintaks: Docker Commit [Options] Nama Imej Container ID. Untuk menyimpan imej ke repositori, anda boleh menggunakan arahan PUSH Docker, Sintaks: Docker Push Nama Imej [: TAG]. Untuk mengimport imej yang disimpan, anda boleh menggunakan arahan tarik docker, sintaks: docker tarik nama imej [: tag].

Cara memeriksa nama bekas Docker Cara memeriksa nama bekas Docker Apr 15, 2025 pm 12:21 PM

Anda boleh menanyakan nama kontena Docker dengan mengikuti langkah -langkah: Senaraikan semua bekas (Docker PS). Tapis senarai kontena (menggunakan arahan grep). Mendapat nama kontena (terletak di lajur "Nama").

Cara menyalin fail di Docker ke luar Cara menyalin fail di Docker ke luar Apr 15, 2025 pm 12:12 PM

Kaedah untuk menyalin fail ke tuan rumah luaran di Docker: Gunakan arahan CP Docker: Jalankan Docker CP [Options] & lt; Container Path & GT; & lt; PATH HOST & GT;. Menggunakan jumlah data: Buat direktori pada tuan rumah, dan gunakan parameter -V parameter untuk memasang direktori ke dalam bekas apabila membuat bekas untuk mencapai penyegerakan fail bidirectional.

See all articles