什麼是Docker Volume?

摘要:Docker Volume,一般翻譯爲數據卷,用於保存持久化數據。當咱們將數據庫例如MySQL運行在Docker容器中時,通常將數據經過Docker Volume保存在主機上,這樣即便刪除MySQL容器,數據依然保存在主機上,有效保證了數據的安全性。這篇博客將經過簡單的實踐幫助你們理解什麼是Docker Volume。 輸入圖片說明python

本文全部命令都是在play-with-docker的在線Docker實例上執行,Docker版本爲17.05.0-ce。docker

  1. 指定Docker Volume

使用docker run命令,能夠運行一個Docker容器數據庫

docker run -itd --volume /tmp/data1:/tmp/data2 --name test ubuntu bash 基於ubuntu鏡像建立了一個Docker容器。 容器的名稱爲test,由--name選項指定。 Docker Volume由--volume選項指定,主機的/tmp/data1目錄與容器中的/tmp/data2目錄一一對應。 2. 查看Docker Volumejson

使用docker inspect命令,能夠查看Docker容器的詳細信息:ubuntu

docker inspect --format='{{json .Mounts}}' test | python -m json.tool [ { "Destination": "/tmp/data2", "Mode": "", "Propagation": "", "RW": true, "Source": "/tmp/data1", "Type": "bind" } ] 使用--format選項,能夠選擇性查看須要的容器信息。.Mount爲容器的Docker Volume信息。 python -m json.tool能夠將輸出的json字符串格式化顯示。 Source表示主機上的目錄,即/tmp/data1。 Destination爲容器中的目錄,即/tmp/data2。 3. 本機文件能夠同步到容器安全

在本機/tmp/data1目錄中新建hello.txt文件bash

touch /tmp/data1/hello.txt ls /tmp/data1/ hello.txt hello.txt文件在容器/tmp/data2/目錄中可見翻譯

使用docker exec命令,能夠在容器中執行命令。debug

docker exec test ls /tmp/data2/ hello.txt 可知,在本機目錄/tmp/data1/的修改,能夠同步到容器目錄/tmp/data2/中。orm

  1. 容器文件能夠同步到主機

在容器/tmp/data2目錄中新建world.txt文件

docker exec test touch /tmp/data2/world.txt docker exec test ls /tmp/data2/ hello.txt world.txt world.txt文件在主機/tmp/data1/目錄中可見

ls /tmp/data1/ hello.txt world.txt 可知,在容器目錄/tmp/data2/的修改,能夠同步到主機目錄/tmp/data1/中。

  1. 結論

Docker Volume本質上是容器與主機之間共享的目錄或者文件,這樣Docker Volume中的數據能夠在主機和容器中實時同步。使用Virtualbox建立虛擬機時,也能夠配置共享目錄,這與Docker Volume很是類似。

歡迎加入咱們Fundebug的Docker技術交流羣: 305097057。

輸入圖片說明

相關文章
相關標籤/搜索