1. 程式人生 > Docker入門教學 >Docker 資料管理 - 掛載目錄或檔案

Docker 資料管理 - 掛載目錄或檔案

通過前面小節的學習我們知道:使用Docker時,產生的資料預設是儲存到容器的UnionFS的讀寫層中的。那麼,我們不妨思考下這兩個問題:

  1. 如果不啟動容器卻想訪問資料該怎麼辦?
  2. 容器被銷燬或損壞,資料也就消失了,這合理嗎?

是的,我想我們的答案應該是一樣的,容器和資料不應該被繫結在一起。為此,Docker 提供了兩類資料管理的方式:

  1. 掛載宿主機目錄或檔案;
  2. 使用資料卷;

本節,我們將介紹如何將宿主機的目錄或檔案掛載到 Docker 容器。

1. 掛載宿主機目錄

我們可以將宿主機的目錄,掛載到容器內,容器與宿主機的目錄可以實時共享。在宿主機上執行如下命令:

# 新建一個目錄
mkdir -p ~/mydir/tmp
# 在目錄中新建一個檔案,填充內容 hello docker
echo "hello docker" > ~/mydir/tmp/text.txt

然後新建一個容器 busybox,將 /mydir/tmp 目錄掛載到容器的 /tmp/ 目錄:

docker run -d -it --name busybox -v ~/mydir/tmp/:/tmp/ busybox

Tips:掛載宿主作業系統目錄的引數是 -v <宿主機目錄路徑>:<容器目錄路徑>

確認檢視容器對應的檔案內容:

docker exec -it busybox cat /tmp/text.txt

如圖所示:
圖片描述

目錄掛載

2. 掛載宿主機檔案

我們也可以將宿主機的檔案掛載到容器內,實現檔案的共享。新建一個容器 busybox2,將 /mydir/tmp/text.txt

檔案掛載到容器的 /tmp/text.txt

docker run -d -it --name busybox2 -v ~/mydir/tmp/text.txt:/tmp/text.txt busybox

Tips:掛載宿主作業系統目錄的引數是 -v <宿主機檔案路徑>:<容器檔案路徑>

確認容器對應的檔案內容:

docker exec -it busybox2 cat /tmp/text.txt

如圖所示:
圖片描述

檔案掛載

Tips:使用 docker rm -f busybox busybox2 移除不再使用的容器。

3. 小結

通過掛載宿主機的目錄或檔案,可以在宿主機和容器間方便地共享資料,包括將提前準備好的配置檔案掛載到容器,或者在開發除錯過程中將程式碼移入 Docker 環境試執行等。