一位 Synology NAS Docker 初學者筆記

由於諸位先進每天不斷的 PVE, Container, LXC, Docker... 的洗腦, 發覺自己好像脫離資訊業太遠了, 應該說太久沒有 study 新的技術了, 前日自不量力想在 Synology NAS 上面安裝 Asterisk PBX, 才驚覺原來很多前輩每天在談的 Docker 衍然成為一門顯學, 但在 Synology NAS 上面卻完全不曉得如何去使用它.

還是回到原點, 從一些最基礎的元件開始學習, 對於不熟悉 Linux & command line 似乎也不是一下子就能上手, 因為太多的教學文件都是從 command line 開始教起, 對於不了解的地方也只能慢慢的 google 找答案. 下面所寫的內容, 我想應該有很多不正確的觀念, 也請各位先進不吝指正.


Squid proxy server

這個套件在 Synology 套件中心已提供, 但這次打算用 Synology Docker 來嘗試自己裝看看. 當做第一個課題, 這裡就直接跳過一些細節, 因為自己也是初學者, 根本就沒有什麼心得好分享, 反正不懂的部份就一邊安裝一邊 google.

裝的是這個 docker image. (sameersbn/squid)
一位 Synology NAS Docker 初學者筆記

問題1: 如何配置 port? 因為 proxy server 總是要提供一個 port number 給 browser 去連, 那麼在 docker 裡面如何去配置?
一般 squid proxy server 預設是配置 3128/TCP port, 如下我們就直接設定 host port 3128 <-> container port 3128, 這樣就解決了 (3128/TCP port 在 Synology NAS 上並未使用, 如果該 port 已被其他程式佔用, 可自行指定為其他 port number)
一位 Synology NAS Docker 初學者筆記

問題2: 系統的一些 log file & config file 存在那裡?
程式總會輸出一些 log, 或者是需要客制化一些 config file, 這些檔案到底在那裡? 在這裡 container file system 可以把它視為一種 overlay 的架構, 我們只需要把會修改的部份 '抽離' 出來, 例如在這個 squid docker image, 在下載時可以去參考它的一些設定說明. ((參考這裡), 就會曉得需要做那些檔案及目錄的設定.

例如在這個 squid docker image, 它會輸出 log file & cache folder.
/var/spool/squid3
/var/log/squid3

我們就直接把它對應到 NAS 的某個目錄即可. 此例為 /docker/squid3
一位 Synology NAS Docker 初學者筆記

這樣就完成設置了. 接下來用 browser 去測試 proxy server 是否能正常 work.
在 firefox 設置如下並測試.
一位 Synology NAS Docker 初學者筆記

如何修改 squid 設定檔
前面的練習確實能安裝一個最基本的 squid proxy server, 但一些更進階的應用似乎要去修改 config file, 但這些 config file 都在 container 之內, 那要怎麼修改呢?

同前, 我們把要修改的部份將其從 container '抽離' 出來, squid 設定檔存放在 /etc/squid3 目錄下. 原來有個 docker 指令提供將檔案從 container copy 到 host.


docker cp <containerId>:/file/path/within/container /host/path/target


這部份就只能利用 ssh 進入 NAS, 然後將 squid config file copy 出來, 然後去設定 folder mapping, 再去修改 squid.conf 達到客制化的目的.
sudo docker cp sameersbn-squid1:/etc/squid3 /docker/squid3/etc/squid3

config file 複製出來後, 然後修改即可.

這樣就完成了我的 Synology NAS 上的 Docker 第一堂課. :-)


不知其所以然?

前面所指的一些檔案及目錄配置, 以及 image 所使用到的 port number 是如何決定的? 其實我也是依樣照著 google 所得到教學文照著做而已. 後來才曉得, 原來這些都是在 dockerfile 中所定義的.

以 squid 這個 image 為例.

sameersbn/squid dockerfile: (click here)

FROM sameersbn/ubuntu:14.04.20160608
MAINTAINER sameer@damagehead.com

ENV SQUID_VERSION=3.3.8 \
SQUID_CACHE_DIR=/var/spool/squid3 \
SQUID_LOG_DIR=/var/log/squid3 \
SQUID_USER=proxy

RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 80F70E11F0F0D5F10CB20E62F5DA5F09C3173AA6 \
&& echo "deb http://ppa.launchpad.net/brightbox/squid-ssl/ubuntu trusty main" >> /etc/apt/sources.list \
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y squid3-ssl=${SQUID_VERSION}* \
&& mv /etc/squid3/squid.conf /etc/squid3/squid.conf.dist \
&& rm -rf /var/lib/apt/lists/*

COPY squid.conf /etc/squid3/squid.conf
COPY entrypoint.sh /sbin/entrypoint.sh
RUN chmod 755 /sbin/entrypoint.sh

EXPOSE 3128/tcp
VOLUME ["${SQUID_CACHE_DIR}"]
ENTRYPOINT ["/sbin/entrypoint.sh"]


原來我們在佈署 container 時, Synology NAS Docker 已經根據 dockerfile 自動配置了一些所需的參數及 port.


實用資源

How to install and use Docker on Synology
全面易懂的Docker指令大全
docker 實作入門
2016-07-09 18:31 發佈
Hello World

有學過 C 語言的網友就曉得. Hello World 是 C 語言大家所學的第一支程式.

瀏覽了一下 Docker Hub (參考這裡), 發現 hello world 是非常多人下載的 image.

在 Synology docker 下嘗試下載, 遇到了這個問題.


直接 ssh 下指令. (我學到了我第一個 docker command line 指令)


這支程式不需要配置目錄對應, 只是輸出一些 log, 代表 docker 運作正常. check log如下:


其實這 hello world 應該拿來做為第一堂課才對.

這樣 GUI 和 command line 交叉使用, 對於不慣於使用 command line 的我應該比較容易上手. 其他很多 docker 指令都可以試一試.



另一個 Cloud-hello-world
https://hub.docker.com/r/dockercloud/hello-world/
它是運行一個 web server.


command line
一併學幾個新指令.
docker images
docker pull image-id
docker rmi image-id

docker ps -a
docker rm container-id
docker start container-id
docker stop container-id
docker top container-id
FB: Pctine
還是不太懂,Docker 既然是在linux 下, 那建立LAMP環境時,
到底需不需要安裝linux阿?
我只是個業餘.等待著機會來臨.
error_404 wrote:
還是不太懂,Docker...(恕刪)


據我所知. 這些已經包好的 lamp image, 裡面都已經包含 linux+LAMP. 你不用自己去安裝了.

FB: Pctine
pctine wrote:
據我所知. host...(恕刪)


想掛多個 linux.
讓user 可透過SSH登入.
這樣系統可與我nas linux 分開.
不知道這樣是否正確 ?

我只是個業餘.等待著機會來臨.
error_404 wrote:
想掛多個 linux.
讓user 可透過SSH登入.
這樣系統可與我nas linux 分開.
不知道這樣是否正確 ? ...(恕刪)


可以這樣做. 但 ssh port 要分開. 如果你只有一個對外的 WAN IP.

如下例: centos-lamp
FB: Pctine
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?