Alist的部署並掛載本地存儲

是一個支援多種存儲,支援網頁瀏覽和WebDAV 的文件列表程序,由gin 和Solidjs 驅動的網盤文件管理開源程序。 Alist不僅可以掛載本地存儲,也可以掛載各類網盤,如阿里雲、百度雲、123等等。下面我們來用docker方法部署Alist,並將本機目錄掛載。

我們使用的版本是支援aria2的docker版本,網址https://hub.docker.com/r/xhofe/alist-aria2

sudo docker run -d --restart=always -v /etc/alist:/opt/alist/data -p 5244:5244 -e PUID=0 -e PGID=0 -e UMASK=022 --name="alist" xhofe/alist-aria2:latest

將自動完成。

首次使用,查詢預設密碼:

sudo docker exec -it alist ./alist admin
Alist的部署並掛載本機儲存-1
返回如圖

用此管理員帳號登入:伺服器ip:5244,點擊頁腳管理,再點擊左側:存儲,添加,本機儲存。其中,掛載路徑指的是網頁中顯示的路徑,/則直接顯示在根目錄中。而根資料夾路徑則是檔案實際儲存在伺服器的位置。值得注意的是,因為我們用的是docker方法,而這個路徑實際上在docker。如果想在伺服器中存取這個文件,需要先進入docker:

1、取得alist容器的ID

sudo docker ps

2、進入容器的命令列

sudo docker exec -it 7dfc82a85888 /bin/bash
Alist的部署並掛載本機儲存-2

此時,該容器的根目錄則對應「根資料夾路徑」的根目錄。例如,我在容器根目錄新建了名為alist的資料夾,其中有一個test.txt文件,而我將根資料夾路徑填為“/alist”,將掛在路徑填為“/114514”,那麼,我將在伺服器ip:5244 中看到:

Alist的部署並掛載本機儲存-3

如何管理Docker 容器裡的文件

Docker 容器雖然類似虛擬機,但如果想要實體機和容器內系統進行檔案傳輸時,還是有點差別的。

如果只是單純對容器內的系統進行本地文件管理的話,那麼用 docker exec 這類命令直接進入容器內部,用常規命令列進行管理即可。

但很多時候都是突然遇到某個需求,需要外部實體機向容器內部拷貝文件,或者容器裡的文件拷貝出來,而Docker 的缺點就是容器一旦創建後,再修改參數比較麻煩,而創建時顯然不可能預估到後續所有需求,提前映射所有目錄啥的。

還好Docker 本身就提供了對應的檔案傳輸指令,那就是copy 和add 指令,這兩個指令用法相似但又有部分不同。

copy 指令顧名思義,是基礎的指令,可以用於容器和外界實體機之間拷貝文件,指令格式視不同目標,可以有多種組合:

docker cp 容器ID 或名稱: 容器目錄實體機目錄docker cp 實體機目錄容器ID 或名稱: 容器目錄

例如創建了一個鏡像,容器ID 為b2860e937844。

Alist的部署並掛載本機儲存-1

例如想將實體機的/home/lishuma 目錄拷貝到容器的/home 目錄下,那就運作:

docker cp /home/lishuma b2860e937844:/home/

運行後進入容器查看對應目錄,可以看到了對應的lishuma 目錄:

如果是把上一條指令結尾斜線去掉,那麼意思就變成了將實體機/home/lishuma 目錄拷貝到容器根目錄中,並且拷貝進去的目錄重新命名為home。

接著反過來,如果要將容器b2860e937844 的/home/lishuma 目錄(裡面有一個test.zip 檔案)拷貝到實體機的/home/lishuma/test 目錄中,那麼指令格式為:

docker cp 容器ID 或名稱: 容器目錄實體機目錄

運行:

docker cp b2860e937844:/home/lishuma /home/lishuma/test/

運作後可以看到實體機對應目錄下出現了所需的目錄:

Alist的部署並掛載本機儲存-1容器文件對外拷貝

和上面一樣,反過來容器向外拷貝的命令如果去掉最後一個斜杠,那麼意思同樣是變成拷貝出來後,重命名為test。

注意事項:

  • 如果來源路徑是個文件,且目標路徑是以/ 結尾, 則docker 會把目標路徑當作一個目錄,會把來源檔案拷貝到該目錄下(如果不存在則自動建立)。
  • 如果目標文件是存在的文件,會被來源文件覆蓋,文件名則為目標文件名。
1/5 - (2 votes)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *