還是回到原點, 從一些最基礎的元件開始學習, 對於不熟悉 Linux & command line 似乎也不是一下子就能上手, 因為太多的教學文件都是從 command line 開始教起, 對於不了解的地方也只能慢慢的 google 找答案. 下面所寫的內容, 我想應該有很多不正確的觀念, 也請各位先進不吝指正.
| Squid proxy server |
這個套件在 Synology 套件中心已提供, 但這次打算用 Synology Docker 來嘗試自己裝看看. 當做第一個課題, 這裡就直接跳過一些細節, 因為自己也是初學者, 根本就沒有什麼心得好分享, 反正不懂的部份就一邊安裝一邊 google.
裝的是這個 docker image. (sameersbn/squid)

問題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)

問題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

這樣就完成設置了. 接下來用 browser 去測試 proxy server 是否能正常 work.
在 firefox 設置如下並測試.

如何修改 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 實作入門

)































































































