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;
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:
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
Lihat medan Pemasangan kontena melalui docker inspect nginx
"Mounts": [ { "Type": "bind", "Source": "/nginx/html", "Destination": "/usr/share/nginx/html", "Mode": "", "RW": true, "Propagation": "rprivate" } ],
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
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
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" } ]
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
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
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:
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
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
Perkongsian data storan
在容器之间共享数据主要有两种方法,第一种比较简单,只需要将目录或者volume挂载到多个容器中即可。这里不做赘述,我们来看一下通过中间容器实现共享的方式。
我们创建一个中间容器,包含绑定挂载目录和一个卷。
docker create -v /share:/volume1 -v /volume2 --name volume_share busybox
在我们需要共享的容器中通过选项--volumes-from拿过来用即可
docker run -d -t --volumes-from volume_share --name container1 busybox
我们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": "" } ],
推荐学习:《docker视频教程》
Atas ialah kandungan terperinci Apakah cara penyimpanan buruh pelabuhan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

docker中rm和rmi的区别:rm命令用于删除一个或者多个容器,而rmi命令用于删除一个或者多个镜像;rm命令的语法为“docker rm [OPTIONS] CONTAINER [CONTAINER...]”,rmi命令的语法为“docker rmi [OPTIONS] IMAGE [IMAGE...]”。

docker官方镜像有:1、nginx,一个高性能的HTTP和反向代理服务;2、alpine,一个面向安全应用的轻量级Linux发行版;3、busybox,一个集成了三百多个常用Linux命令和工具的软件;4、ubuntu;5、PHP等等。

docker对于小型企业、个人、教育和非商业开源项目来说是免费的;2021年8月31日,docker宣布“Docker Desktop”将转变“Docker Personal”,将只免费提供给小型企业、个人、教育和非商业开源项目使用,对于其他用例则需要付费订阅。

docker容器重启后数据会丢失的;但是可以利用volume或者“data container”来实现数据持久化,在容器关闭之后可以利用“-v”或者“–volumes-from”重新使用以前的数据,docker也可挂载宿主机磁盘目录,用来永久存储数据。

docker能安装oracle。安装方法:1、拉取Oracle官方镜像,可以利用“docker images”查看镜像;2、启动容器后利用“docker exec -it oracle11g bash”进入容器,并且编辑环境变量;3、利用“sqlplus /nolog”进入oracle命令行即可。

解决方法:1、停止docker服务后,利用“rsync -avz /var/lib/docker 大磁盘目录/docker/lib/”将docker迁移到大容量磁盘中;2、编辑“/etc/docker/daemon.json”添加指定参数,将docker的目录迁移绑定;3、重载和重启docker服务即可。

AUFS是docker最早支持的存储引擎。AUFS是一种Union File System,是文件级的存储驱动,是Docker早期用的存储驱动,是Docker18.06版本之前,Ubuntu14.04版本前推荐的,支持xfs、ext4文件。

docker中的镜像会自动更新;可以利用Watchtower工具来自动更新镜像,Watchtower是一个可以监控正在运行的容器镜像是否更新的工具,当本地镜像与远程镜像有差异的时候,可以自动使用当前容器的运行参数以新镜像重新创建一个新的容器,并删除旧的容器。


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.