介紹
一般而言,Docker 容器僅運行特定的一段時間 – 即執行該命令所需的時間。在運行期間,只能從容器內部訪問容器內可用的數據。
Docker 數據卷 可用於輕鬆訪問文件並將其存儲更長的時間。例如,如果您有一個 Nginx 網頁伺服器,並且想要存儲日誌以進行審計,您可以使用 Docker 數據卷將容器中的日誌存儲在您的主機中。
在本教學中,您將學習如何在 Docker 容器內部與主機之間共享數據。
先決條件
進行本教學前,您需要滿足以下先決條件:
- Ubuntu 18.04 伺服器:您可以輕鬆地按照我們實用的教學,使用 Ubuntu 18.04 映像檔創建一個新的 CloudSigma 伺服器.
- Docker – 您可以使用我們關於如何在 Ubuntu 上設置 Docker 的教學來安裝 Docker 並對其進行了解。
步驟 1 – 綁定掛載數據卷
您可以創建一個名為 logs 的目錄在您當前用戶的家目錄中,並將其綁定掛載到 /var/log/nginx 在 Nginx 容器中,使用以下命令:
|
1 |
docker run --name=nginx -d -v ~/logs:/var/log/nginx -p 5000:80 nginx |
以下是關於此命令的更詳細資訊:
--name=nginx為容器命名,以便於引用。-d參數會分離進程並在背景運行。-v hostPath:containerPath映射主機路徑和容器路徑以綁定掛載。-p hostPort:containerPort參數將容器的連接埠映射到主機連接埠。nginx在行尾是用於啟動容器的映像檔名稱。
步驟 2 – 訪問主機上的數據
現在,您的伺服器上運行著一個 Nginx 容器,並且伺服器的連接埠 5000 映射到 Nginx 的連接埠 80。您可以使用以下 URL 在網頁瀏覽器中打開該連接埠:
|
1 |
http://serverIP:5000/ |

在 ~/logs 目錄中,您將看到 access.log 和 error.log 文件。您可以使用 cat 命令查看日誌:
|
1 |
cat access.log |
|
1 2 3 |
輸出: xx.xxx.xxx.xxx - - [17/Apr/2021:19:25:05 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.xxx.xxx.xxx Safari/537.36" "-" xx.xxx.xxx.xxx - - [17/Apr/2021:19:25:05 +0000] "GET /favicon.ico HTTP/1.1" 404 556 "http://xx.xxx.xxx.xxx:5000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.xxx.xxx.xxx Safari/537.36" "-" |
您也可以檢查主機上的日誌目錄 ~/logs 並找到 Nginx 的日誌文件。此外,如果您在 logs 資料夾中進行任何更改,這些更改也會反映在容器的 /var/log/nginx 資料夾中。
結論
在本教學中,您學習了如何在 Docker 容器內部與主機之間共享數據。這在開發環境中至關重要,因為分析日誌是進行偵錯的必要步驟。
有關 Docker 的更多資源,請參閱我們的部落格,您可以查看以下內容:
- 如何在公有雲的 Ubuntu 上安裝 & 操作 Docker
- 在 CentOS 7 上安裝和設置 Docker
- 清理 Docker 資源 – 映像檔、容器和數據卷
- 如何在 CloudSigma 上運行 Docker(使用 CloudInit)已更新
祝您運算愉快!
留言
目前尚無留言。成為第一個留言的人吧。