使用绑定

Docker SELF
等級 19 , 課堂 4
開放

5.1 綁定目錄 (bind mounts) 的概念

通過使用綁定目錄 (bind mounts) 將主機的目錄掛載到容器中是 Docker 的一個強大功能,可以讓容器直接使用位於主機系統上的文件和目錄。這在開發、測試和配置時特別有用,當需要使用本地文件而無需將它們複製到容器時,這個功能尤為便捷。在這次講座中,我們將探討如何使用綁定目錄,並給出示例和最佳實踐。

綁定目錄允許將主機系統中的特定目錄或文件掛載到容器中。這與由 Docker 管理並存儲在特殊目錄中的 volumes 不同。

使用綁定目錄的優點

  1. 直接訪問主機文件:容器可以直接使用和修改位於主機上的文件。
  2. 開發便利性:開發者可以在主機上修改文件,並即時看到這些更改體現在容器中。
  3. 彈性靈活:主機上的任何目錄都可以掛載到容器中。

用於掛載綁定目錄的命令

綁定目錄可使用參數 -v--mount 在啟動容器時進行掛載。

5.2 使用參數 -v 的範例

1. 將主機的目錄掛載到容器中

以下是一個簡單的例子,說明如何將主機的目錄掛載到容器中:

Terminal

docker run -d --name my_container -v /path/on/host:/path/in/container nginx

在這個範例中,主機上的目錄 /path/on/host 被掛載到 nginx 容器內的目錄 /path/in/container 中。

2. 將主機的文件掛載到容器中

你也可以掛載單個文件:

Terminal

docker run -d --name my_container -v /path/on/host/config.conf:/etc/nginx/nginx.conf nginx

在這個範例中,主機上的配置文件 config.conf 被作為配置文件 nginx.conf 掛載到容器內。

5.3 使用參數 --mount 的範例

參數 --mount 提供了更詳細的方式來掛載綁定的目錄,並可以指定不同的參數。

1. 使用 --mount 掛載目錄

Terminal

docker run -d --name my_container --mount type=bind,source=/path/on/host,target=/path/in/container nginx

這個範例與前面使用 -v 的範例類似,但它使用了更詳細的語法。

2. 掛載為唯讀模式

Terminal

docker run -d --name my_container --mount 
type=bind,source=/path/on/host,target=/path/in/container,readonly nginx

在這個範例中,目錄以唯讀模式掛載,這樣可以防止在容器中對檔案進行更改。

5.4 實際範例

為了開發 web 應用程式,你可以將主機上的原始碼目錄掛載到 container 中。

在主機上創建原始碼目錄:

Terminal

mkdir -p ~/my_web_app
echo "Hello, World!" > ~/my_web_app/index.html

使用掛載目錄啟動 container:

Terminal

docker run -d --name web_dev -v ~/my_web_app:/usr/share/nginx/html nginx

現在對主機上 ~/my_web_app 目錄的任何更動都會立即反映在 container 中。

範例 2: 使用配置文件

你可以將主機上目錄中的配置文件掛載到 container 中。

在主機上創建配置文件:

Terminal

echo "user www-data;" > ~/nginx.conf

echo "worker_processes auto;" >> ~/nginx.conf

使用掛載配置文件啟動 container:

Terminal

docker run -d --name nginx_custom -v ~/nginx.conf:/etc/nginx/nginx.conf nginx

在這個範例中,主機上的 Nginx 配置文件被用於 container 內。

5.5 檢查已掛載的目錄和文件

你可以使用 docker exec 指令來在容器內執行命令,以檢查掛載目錄和文件的內容。

範例

檢查目錄內容:

Terminal

docker exec -it my_container ls /path/in/container

檢查文件內容:

Terminal

docker exec -it my_container cat /path/in/container/config.conf

刪除綁定目錄

綁定目錄不直接由 Docker 管理,因此刪除操作是在主機文件系統層面進行的。

範例

刪除主機上的綁定目錄:

Terminal

rm -r /path/on/host
1
Опрос
在 Docker 中管理數據,  19 уровень,  4 лекция
недоступен
在 Docker 中管理數據
在 Docker 中管理數據
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION