Docker核心技术之数据管理
一、Docker 數據卷簡介
為什么用數據卷
宿主機無法直接訪問容器中的文件
容器中的文件沒有持久化,導致容器刪除后,文件數據也隨之消失
容器之間也無法直接訪問互相的文件
為解決這些問題,docker加入了數據卷(volumes)機制,能很好解決上面問題,以實現:
容器與主機之間、容器與容器之間共享文件
容器中數據的持久化
將容器中的數據備份、遷移、恢復等
數據卷的特點
數據卷存在于宿主機的文件系統中,獨立于容器,和容器的生命周期是分離的。
數據卷可以目錄也可以是文件,容器可以利用數據卷與宿主機進行數據共享,實現了容器間的數據共享和交換。
容器啟動初始化時,如果容器使用的鏡像包含了數據,這些數據會拷貝到數據卷中。
容器對數據卷的修改是實時進行的。
數據卷的變化不會影響鏡像的更新。數據卷是獨立于聯合文件系統,鏡像是基于聯合文件系統。鏡像與數據卷之間不會有相互影響。
二、Docker 數據卷管理
Docker掛載容器數據卷的三種方式
bind mounts:將宿主機上的一個文件或目錄被掛載到容器上。
volumes:由Docker創建和管理。使用docker volume命令管理
tmpfs mounts:tmpfs 是一種基于內存的臨時文件系統。tmpfs mounts 數據不會存儲在磁盤上。
bind mounts方式掛載數據卷
利用docker run/create的參數為容器掛載數據卷
用法: ?? ?方式一: -v, --volume參數 ?? ? ? ???
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -v 宿主機文件或文件夾路徑:容器中的文件或者文件夾路徑 ?? ?
? ? ? ? ? ? ? ?方式二:--mount參數 ?? ? ? ?? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? --mount type=bind, src=宿主機文件或文件夾路徑, dst=容器中的文件或者文件夾路徑 ?? ? ? ?? ?
注意:src指定的文件和路徑必須提前創建或存在
命令演示:
volumes方式掛載數據卷
利用docker run/create為容器掛載數據卷
用法: ?? ?方式一: -v, --volume參數 ?? ? ? ??? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?-v VOLUME-NAME:容器中的文件或者文件夾路徑 ?? ?
? ? ? ? ? ? ? ? 方式二:--mount 參數 ?? ???
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? --mount type=volume, src=VOLUME-NAME, dst=容器中的文件或者文件夾路徑
volume對象管理: ?? ?
docker volume? ? ? ? 命令管理volume數據卷對象 ?? ?
docker volume create?? ??? ?創建數據卷對象 ?? ?
docker volume inspect?? ??? ?查看數據卷詳細信息 ?? ?
docker volume ls?? ??? ??? ?查看已創建的數據卷對象 ?? ?
docker volume prune?? ??? ?刪除未被使用的數據卷對象 ?? ?
docker volume rm?? ??? ?刪除一個或多個數據卷對象
tmpfs mount方式掛載數據卷
利用docker run/create為容器掛載數據卷
用法: ?? ?--mount type=tmpfs, dst=PATH
共享其他容器的數據卷-數據卷容器
利用docker run/create 的--volumes-from參數指定數據卷容器
用法: ?? ?docker run/create --volumes-from CONTAINER
三、Docker 數據卷注意事項
數據卷使用注意
Docker的數據卷更多會是使用volumes方式來進行使用。使用時需注意:
如果掛載一個空的數據卷到容器中的一個非空目錄中,那么這個目錄下的文件會被復制到數據卷中。
如果掛載一個非空的數據卷到容器中的一個目錄中,那么容器中的目錄中會顯示數據卷中的數據。
如果原來容器中的目錄中有數據,那么這些原始數據會被隱藏掉。
這兩個規則都非常重要,靈活利用第一個規則可以幫助我們初始化數據卷中的內容。掌握第二個規則可以保證掛載數據卷后的數據總是你期望的結果。
四、總結
重點掌握
數據卷特征和簡介
mount方式綁定數據卷
數據卷掛載的三種形式
數據卷使用的注意事項
總結
以上是生活随笔為你收集整理的Docker核心技术之数据管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kafka入门教程与详解
- 下一篇: Docker核心技术之仓库