Docker基礎:數據卷技術介紹
?今天給大家簡單聊聊Docker中的數據卷知識。
1.Docker數據管理
大家在生產環境使用Docker部署項目的時候,基本都需要進行數據持久化、或多個容器間進行數據共享,這個就需要容器的數據管理來進行操作。
1.2 Docker數據持久化
Docker數據持久化就是容器中的數據不會隨著容器的結束而隨之結束,在Docker中如果需要實現數據的持久化,前提把數據從Docker容器掛載到宿主主機上去。
1.2 容器中數據管理的方式
數據卷(Data Volumes):容器內的數據直接映射到宿主主機環境
數據卷容器(Data Volume Containers):使用特定容器維護數據卷
2.數據卷的介紹
數據卷是一個可供容器內部使用的特殊目錄,它將宿主主機的操作系統目錄直接映射進容器內,類似于Linux系統中的 mount 操作。
2.1 數據卷作用
容器的持久化、容器間繼承 + 共享數據
2.2 卷的概念
本質就是目錄或文件,存在于一個或多個容器中,由docker掛載到容器中,但不屬于聯合文件系統,因此能夠繞過合文件系統提供一些用于持續存儲或共享數據的特性。卷的目的就是實現數據的持久化,完全獨立于容器的生存周期,因此Docker不會在容器刪除時同時刪除其掛載的數據卷。
2.3 數據卷的特點
- 數據卷可以在容器之間實現共享和重用,容器間傳遞數據將變的高效方便
- 對數據卷內數據的修改會立馬生效,無論是容器內操作還是本地操作
- 對數據卷的更新不會影響Docker鏡像,解耦了應用和數據
- 數據卷的生命令周期不受容器的影響,除非你卸載它。
3.Docker數據卷常見的作用
- 數據持久化:比如MySQL數據庫,數據目錄要掛載到宿主主機或者別的地方,否則MySQL容器刪除你的數據也會隨之刪除。
- 同步操作:比如我需要修改nginx的配置文件,不需要在進入容器內部,可以直接修改數據卷對應的文件就可以進行配置實時同步。
- 容器間數據共享:多個容器之間需要數據共享的時候
4.操作數據卷
4.1 常用命令
docker volume 指令值
指令值:
- create:創建一個volume
- inspect:顯示一個或多個volume的信息
- ls :列出所有的volume
- prune :刪除未使用的volume
- rm:刪除一個或多個指定的volume
4.2 掛載數據卷
創建數據卷myvolume;
docker volume create myvolume
運行nginx容器;
docker run --name nginxtest -v myvolume:/usr/share/nginx/html -p 8000:80 -d nginx
查看數據卷掛載信息;
docker volume inspect myvolume
數據卷新增文件并查看容器內掛載的目錄文件是否同步;
cd /var/lib/docker/volumes/myvolume/_data #進入容器卷目錄
vi test.html #創建test.html 目錄
ls
進入容器查看目錄是否正常同步;
docker exec -it nginxtest /bin/bash
cd /usr/share/nginx/html
ls
容器內刪除test.html 查看myvolume是否也刪除了;
rm test.html