docker volume 建立 修改 清理

2022-03-20 05:30:41 字數 3876 閱讀 8000

#環境 centos7.4 , docker version 17.12.0-ce

docker volume建立、備份、nfs儲存

資料存容器內,刪容器即銷毀全部資料

要保留的資料(資料持久化),需儲存在容器外

docker volume是檔案或目錄,mount到docker容器中使用

docker volume 官網文件位址 

#bind muount例項

#docker掛載檔案或目錄到容器

#建立目錄及檔案

mkdir -p /data/test1

echo 'docker volume'>/data/test1/test.txt

#建立容器,-v 掛載目錄(預設讀寫許可權)

docker run -dit --name busybox1 -v /data/test1:/data/test1 busybox

#檢視docker exec busybox1 cat /data/test1/test.txt

#修改檔案後,在檢視本地是否更改

docker exec busybox1 echo my files>>/data/test1/test.txt

docker exec busybox1 cat /data/test1/test.txt

cat /data/test1/test.txt

為保證dockerfile可移植,構建映象不能使用bind muount

#tmpfs mounts
#使用--tmpfs

#volumes
#不指定掛載目錄,預設目錄/var/lib/docker/volumes//_data/

#docker volumes可管理,官方推薦

#使用volumes

#不指定掛載目錄,自動建立 volumes/#在容器建立目檔案

docker exec busybox2 touch /data/test/test2.txt

#在宿主機檢視檔案路徑

find /var/lib/docker/volumes -name test2.txt

docker inspect busybox2 |grep source

#docker volume命令管理

#建立volume

docker volume create volume-test1

#檢視引數

docker inspect volume-test1

#使用volume

docker run -dit --name busybox3 -v volume-test1:/volume busybox

#檢視docker inspect -f } busybox3

#檢視docker資料卷

docker volume ls

#刪除沒使用的資料卷(謹慎使用)

docker volume prune

bind mounts和volumes都通過-v或--volume掛載,tmpfs使用--tmpfs

三種都可以使用--mount掛載,格式更清晰,官方推薦使用

#資料卷容器 volume container

# --volumes-from 容器名,就會傳遞容器的掛載目錄(volume引數傳遞)

#建立容器busybox4(不需要啟動)

mkdir -p /data/test2

echo 'busybox4'>/data/test2/test.txt

docker create --name busybox4 -v /data/test2:/data/test2 busybox

#--volumes-from 使用其它容器的volume

docker run -dit --name busybox5 --volumes-from busybox4 busybox

#檢視docker exec busybox5 cat /data/test2/test.txt

#掛載多個 資料卷容器

docker run -dit --name busybox6 --volumes-from busybox4 --volumes-from busybox1 busybox

docker exec busybox6 ls /data/ #檢視

#使用資料卷容器備份busybox4的volumes

docker run --rm --volumes-from busybox4 -v $(pwd):/backup busybox \

tar cvf /backup/backup.tar /data/test2/

以上docker volume例項,全部在單台docker主機

docker集群環境,需要使用共享儲存、分布式儲存

#nfs服務端,配置nfs共享

yum install nfs-utils rpcbind -y

mkdir -p /data/nfs/docker

echo "/data/nfs *(rw,no_root_squash,sync)">>/etc/exports

exportfs -r

systemctl start rpcbind nfs-server

systemctl enable rpcbind nfs-server

showmount -e localhost

#nfs客戶端

yum install -y nfs-utils rpcbind

#建立volume 連線 172.16.50.43:/data/nfs

docker volume create --driver local \

--opt type=nfs \

--opt o=addr=172.16.50.43,rw \

--opt device=:/data/nfs \

volume-nfs

#檢視docker volume ls

docker volume inspect volume-nfs

#容器使用volume-nfs

docker run -dit --name busybox7 -v volume-nfs:/nfs busybox

#檢視docker inspect -f } busybox7

df -h |grep /data/nfs

#volume目錄/var/lib/docker/volumes/volume-nfs/_data自動掛載到了nfs服務上

#容器創檔案測試

docker exec busybox7 touch /nfs/testfiles.txt

#使用volume driver 可實現更多的backend

#刪除測試容器,volume

docker rm -f -v tmpfs-test busybox    

#-f 強制刪除,-v 刪除volume

docker volume prune

docker volume資料掛載

背景 未解決多個應用資料共享,docker有自己非常好的解決方案。即通過volume掛載,將硬碟上的資料或者檔案對映到映象容器中,達到乙份資料多處使用,即時修改,即時生效。下面介紹兩種docker資料掛載的方法 1.在執行執行時掛載 將本地目錄掛載到映象虛擬目錄 不足之處在於每次都要寫本地目錄,不容...

深入理解 Docker Volume

本文主要介紹了docker volume的原理以及使用方式,是docker入門教程的延伸。作者通過從資料的共享 資料容器 備份 許可權以及刪除volume五方面深入介紹了volume的工作原理,從實戰中幫助讀者了解volume。從docker irc頻道以及 stackoverflow 的問題來看,...

深入理解Docker Volume

從docker irc頻道以及stackoverflow的問題來看,很多人還不是很明白docker volume的工作原理。在這篇文章中,我會盡最大的努力來解釋volume是如何工作的,並展示一些最佳實踐。這篇文章主要是針對那些對volume不了解的docker使用者,當然有經驗的使用者也可以通過本...