docker在容器中管理數(shù)據(jù)主要有兩種方式:
(1)數(shù)據(jù)卷(Volumes)
(2)掛載主機目錄(Bind mounts)救鲤。
從docker下載下來的叫鏡像images;
使用docker run運行起來的鏡像叫容器containers氢橙;
1. 掛在本地目錄
Docker容器啟動時叫搁,如果要掛載宿主機上的一個目錄甩鳄,可以用-v參數(shù)指定逞度。
加入要啟動一個ubuntu容器,宿主機的/data1目錄掛載到容器的/data2目錄妙啃,可通過以下方式指定:
docker run -it -v /data1:/data2 centos /bin/bash
在容器啟動后档泽,容器內(nèi)會自動創(chuàng)建/data2的目錄。
-v參數(shù)中揖赴,冒號":"前面的目錄是宿主機目錄馆匿,后面的目錄是容器內(nèi)目錄。
冒號”:”前后的路徑必須是絕對路徑燥滑,以下斜線“/”開頭渐北。
宿主機目錄如果不存在,則會自動生成铭拧。
現(xiàn)在鏡像內(nèi)就可以在宿主機和docker里互相共享文件了赃蛛。
2. docker數(shù)據(jù)卷容器
docker還提供了一種更高級的用法,叫數(shù)據(jù)卷搀菩。
數(shù)據(jù)卷:“其實就是一個正常的容器呕臂,專門用來提供數(shù)據(jù)卷供其它容器掛載的”。感覺像是由一個容器定義的一個數(shù)據(jù)掛載信息肪跋。其他的容器啟動可以直接掛載數(shù)據(jù)卷容器中定義的掛載信息歧蒋。
Step1.創(chuàng)建數(shù)據(jù)卷命令
docker volume create edc-nginx-vol // 創(chuàng)建一個自定義容器卷
docker volume ls // 查看所有容器卷
docker volume inspect edc-nginx-vol // 查看指定容器卷詳情信息
volumes:默認位于/var/lib/docker/volumes目錄中。
Step2.****創(chuàng)建使用指定卷的容器
有了自定義容器卷,我們可以創(chuàng)建一個使用這個數(shù)據(jù)卷的容器疏尿。
命令:
docker run -d -it --name=shared-vol -v shared-vol:/shareddata ubuntu:18.04
docker ps
docker exec -it 80692ff2b813 /bin/bash
到剛剛創(chuàng)建的數(shù)據(jù)卷里面查看:
此外,我們還可以啟動多個容器實例易桃,并且共享同一個數(shù)據(jù)卷褥琐,復(fù)用性和擴展性較強。
Step3.****如果不再使用數(shù)據(jù)卷了晤郑,可以手動清理掉
命令:
docker stop xxx// 暫停容器實例
docker rm xxx // 移除容器實例
docker volume rm xxx // 刪除自定義數(shù)據(jù)卷
原文鏈接:
Docker掛載本地目錄和數(shù)據(jù)卷容器實現(xiàn)文件共享 - 知乎 (zhihu.com)
https://mp.weixin.qq.com/s/MvJdjDfMCU6g3UhStiinyg