套件不求人,威聯通Docker Compose體驗及配置編寫

前言

在日常工作與生活中,對於那些重複、冗雜的任務,我們常常會找尋規律,製作模板。例如excel算賬,有了表格模板,只需要填入數據,即可幫助我們計算;但是在NAS使用中,我發現本來很簡潔優雅的Docker,被一些教程弄得囉嗦無比。一個簡單的軟件安裝,弄一大堆圖文步驟,很多同伴們看了教程就頭痛,只想找個現成的套件安裝。實際上docker優點就在於簡易分發和快速部署,往往docker-hub上作者早就寫好了一鍵命令安裝,卻很多人不去看,以至於把簡單的事情搞複雜了。

當然一個個安裝軟件,其實也不算高效,而Docker Compose 則讓你先寫好模板,然後批量運行多個Docker程序組的利器,有了它,你就能提前設定好參數,輕鬆把所有要用的軟件裝齊,並指定不同容器間的依賴關係。相信用過unraid系統的同志,可能對裏面的APPS商店有些印象,其實就是一個docker的模板庫。威聯通也有類似的功能,但是並沒有形成一套完善的商店生態?可能因為它有自己的應用商店,不想為docker添磚加瓦了。不過還好,威聯通改良了Docker Compose的使用體驗,讓你也能通過預製模板部署應用。

套件不求人,威聯通Docker Compose體驗及配置編寫

一、我該怎麼做?

你只需做兩件事:1、編輯docker-compose.yml配置 ;2、運行docker-compose up。

別擔心,你不需要像linux用户那樣用ssh連接、sftp上傳文件,也不用在終端中敲擊命令,我發現威聯通已把Docker Compose放到了網頁界面,你只需複製粘貼,然後在線點一下“創建”,即可一鍵完成部署。下面看圖:

套件不求人,威聯通Docker Compose體驗及配置編寫

套件不求人,威聯通Docker Compose體驗及配置編寫

好了,按照上面兩圖的步驟,你就能等待docker應用自行部署了,非常簡單吧!部署完成的應用會顯示為三個方塊相疊的圖標,狀態為“APP”,如果有啥需要修改的地方,請點擊右邊倒數第二個按鈕,重新修改yaml配置。

套件不求人,威聯通Docker Compose體驗及配置編寫

那麼最重要的“yaml配置”怎麼得到?下面我來簡單介紹一下。

二、如何得到yaml配置1、打開docker-hub網站

網址:https://hub.docker.com/  ,這裏匯聚了全球各種docker鏡像,網上很多著名開源項目都在此發佈鏡像以供安裝。我們在左上角輸入需要的軟件名,例如wordpress、jellyfin,按下回車鍵搜索。

套件不求人,威聯通Docker Compose體驗及配置編寫

套件不求人,威聯通Docker Compose體驗及配置編寫

2、查找yaml配置

點開需要的鏡像後,往下翻網頁,一般中後部分會有一段docker-compose的代碼,這就是我們需要複製的yaml,有的官方介紹裏沒有這個,可以找找第三方(例如linuxserver)製作的docker介紹。

套件不求人,威聯通Docker Compose體驗及配置編寫

套件不求人,威聯通Docker Compose體驗及配置編寫

這些配置文件很好懂吧,一眼就能看出我們需要的修改的東西,我也沒學過docker-compose,是個純新手,但是一看它就明白了。

注:許多大型項目都會給出Docker Compose的配置,但是個人開發者往往還是喜歡用命令行。如果你在項目頁面只看到了docker run開頭的代碼,請參考我以前的一篇文章: 

3、語法簡介

dockers compose 需要一個定義docker服務、 網絡和數據卷的 YAML 語法文件 ,開頭用version: 'X.X' 定義語法版本。

image: 是我們需要拉取的docker鏡像,這次用過下次部署時就不需要重新下載了,很節約時間。

container_name:是容器名,為容器指定一個名稱,而不是使用默認的名稱。

environment:是環境變量,非常重要,一般我們設置權限、時區、數據庫、用户密碼都是依靠環境變量。 有了它,你就能解放自己的鼠標,不用每次部署後一個個點擊和輸入,而是靠docker-compose自動設置。

volumes:是數據文件存放位置,冒號前為本地路徑,冒號後為容器內路徑。  本地路徑可以用一個名字代替,在威聯通Container Station中的存儲空間裏可以看到它,也可以寫成絕對路徑,例如/share/Container/XXX。

套件不求人,威聯通Docker Compose體驗及配置編寫

ports:是網絡端口,冒號前是我們web訪問的實際端口,冒號後是容器內的端口。

devices:主要是掛載硬件設備,例如jellyfin硬件轉碼就會用到/dev/dri:/dev/dri。

depends_on:解決啓動順序的問題,一般容器啓動的順序是有要求的,如果直接從上到下啓動,必然會因為容器依賴問題而啓動失敗,使用depends_on命令可以讓數據庫等重要容器先運行,免得運行時出錯。

extra_hosts:就是往 /etc/hosts 文件中添加一些記錄,可以指定主機名對應的ip,也可以更改網站對應的ip,例如我們刮削電影時,往往會被dns污染,導致刮削失敗,這時可以直接更改host解決。

三、實戰演練
1、多個依賴項(seafile)。

當我們使用私有網盤時,例如kodbox,seafile時,如果想提高性能,得先設置用户名和密碼,數據庫(mysql地址、密碼),緩存服務這些東西,如果依次安裝數據庫、緩存,然後又在網盤程序中設置數據、緩存,是不是感覺好麻煩?能不能直接先設置好這些東西,安裝後直接用呢?當然可以,下面配置參考了seafile官方文檔和威聯通上實際情況編寫:

version: '2.0'

services:

  db:

    image: mariadb

    container_name: seafile-mysql

    environment:

      - MYSQL_ROOT_PASSWORD=db_dev  # Requested, set the root's password of MySQL service.

      - MYSQL_LOG_CONSOLE=true

    volumes:

      - /share/Container/seafile/db:/var/lib/mysql  # Requested, specifies the path to MySQL data persistent store.

    networks:

      - seafile-net

  memcached:

    image: memcached

    container_name: seafile-memcached

    entrypoint: memcached -m 256

    networks:

      - seafile-net

          

  seafile:

    image: seafileltd/seafile-mc:latest

    container_name: seafile

    ports:

      - "12401:80"

#      - "12402:443"  # If https is enabled, cancel the comment.

    volumes:

      - /share/Container/seafile/data:/shared   # Requested, specifies the path to Seafile data persistent store.

    environment:

      - DB_HOST=db

      - DB_ROOT_PASSWD=db_dev  # Requested, the value shuold be root's password of MySQL service.

      - TIME_ZONE=Asia/Shanghai # Optional, default is UTC. Should be uncomment and set to your local time zone.

      - [email protected] # Specifies Seafile admin user, default is '[email protected]'.

      - SEAFILE_ADMIN_PASSWORD=asecret     # Specifies Seafile admin password, default is 'asecret'.

      - SEAFILE_SERVER_LETSENCRYPT=false   # Whether use letsencrypt to generate cert.

      - SEAFILE_SERVER_HOSTNAME=127.0.0.1 # Specifies your host name.

    depends_on:

      - db

      - memcached

    networks:

      - seafile-net

networks:

  seafile-net:

我們把上面的配置文件粘貼進去,點擊創建,過一會兒seafile就安裝好了。數據庫和緩存服務也不需要你去單獨設置,甚至用户名密碼也提前設置好了:用户 [email protected] 密碼asecret,你也可以先改好配置文件再粘貼。

套件不求人,威聯通Docker Compose體驗及配置編寫

套件不求人,威聯通Docker Compose體驗及配置編寫

套件不求人,威聯通Docker Compose體驗及配置編寫

2、影音一條龍

我們在建立自己的影音庫時,一般需要3類軟件:管理、刮削、展示,由於威聯通自帶的文件瀏覽器有些電影格式打不開,我一般使用 filebrowser(荒野無燈大佬的鏡像,支持硬解轉碼)瀏覽管理電影,tinymediamanager刮削電影,jellyfin展示電影海報牆以及轉碼播放。以前我是一個個安裝的,而且安裝好後,修改掛載路徑和參數很麻煩,但是通過docker compse,不僅一次性裝好這三個軟件,更重要的是直接解決了硬解轉碼(我掛載了dri,並以管理員身份運行jellyfin),和刮削失敗的問題(我為tinymediamanager添加了兩條host記錄,不翻牆也能連上tmdb服務器了),如果有啥要改動的地方,也能在網頁端一鍵修改。yaml配置如下:

version: '3'

services:

  jellyfin:

    image: linuxserver/jellyfin

    container_name: jellyfin

    environment:

      - PUID=0

      - PGID=0

      - TZ=Asia/Shanghai

    volumes:

      - /share/Container/jellyfin:/config

      - /share:/media

    ports:

      - 12501:8096

      - 12502:8920

    devices:

      - /dev/dri:/dev/dri

    extra_hosts:

        - "api.themoviedb.org:13.249.146.88"

        - "image.themoviedb.org:104.16.61.155"

    restart: always

  

  filebrowser:

    image: 80x86/filebrowser:amd64

    container_name: filebrowser

    environment:

      - PUID=0

      - PGID=0

      - TZ=Asia/Shanghai

    volumes:

      - /share:/myfiles

    ports:

      - 12503:8082

    devices:

      - /dev/dri:/dev/dri

    restart: always

  

  tinymediamanager:

    image: romancin/tinymediamanager:latest

    container_name: tinymediamanager

    environment:

      - GROUP_ID=0

      - USER_ID=0

      - TZ=Asia/Shanghai

      - ENABLE_CJK_FONT=1

    volumes:

      - /share/Container/tinymediamanager/config:/config

      - /share:/media

    ports:

      - 12504:5800

      - 12505:5900

    extra_hosts:

        - "api.themoviedb.org:13.249.146.88"

        - "image.themoviedb.org:104.16.61.155"

    restart: always

也是一樣的方法,先粘貼yaml配置,然後點擊“創建”,過一會兒3個軟件都裝好了,是不是很快!

套件不求人,威聯通Docker Compose體驗及配置編寫

套件不求人,威聯通Docker Compose體驗及配置編寫

套件不求人,威聯通Docker Compose體驗及配置編寫

總結

一直以來,NAS系統都在擴展自己的領域邊界,一方面建立應用商店,打造自己的生態;一方面也在引入企業級功能,並將其包裝到直觀的web界面中,最著名的例子就是Docker。商店做得最好的無疑是羣暉,各種第三方套件都有,而將docker包裝得較好的是unraid(每個容器都能按模板輕鬆設置,安裝好後還有圖標顯示)。

威聯通則是多頭押注,1、有官方應用商店,但一些套件介紹不去漢化,一些常用套件缺失,得靠第三方qnapclub。2、有docker+lxc環境,但功能似乎有待改進,例如安裝好後不能修改掛載路徑。3、有Docker Compose可導入模板,但是自帶的模板只有幾個,似乎並不打算多做點模板。

我希望明年再次打開Container Station時,裏面能提供各色docker模板一鍵安裝,而不是現在這樣藏在角落裏,等用户慢慢去探索用法。其實只要官方持續更新預製的compose,並像unraid那樣附帶圖標,社區用户也能提供自制模板,那麼威聯通的docker就能變得簡單易用,成為系統一大特色。

版權聲明:本文源自 網絡, 於,由 楠木軒 整理發佈,共 5721 字。

轉載請註明: 套件不求人,威聯通Docker Compose體驗及配置編寫 - 楠木軒