前年底我買了一張Raspberry Pi ZERO的開發板 |
及相關附件(keyboard, sdcard,線材等)來測試 |
不過實在是太不方便了,就開發的角度來看 |
但也是去年真的太忙了,我根本就沒時間去摸它 |
下載raspbin 9後,燒進SD Card之後 |
開機把畫面接到電視稍微測試一下之後 |
就被我晾在家裡櫃子的一角 |
直到最近我想在pi上頭開發Nagios 4 Plugin |
我才在想有沒有更簡便的方式 |
找了Internet,有人用QEMU 來模擬ARM |
樹莓官方居然有一專篇討論 |
HOWTO: Virtual Raspbian on Qemu in Ubuntu or Debian 2017 Ver |
但實在是太舊了, QEMU目前的版本跑不起來 |
而且還得下載人家分享出來的在pi上跑的就kernel |
我是依照文件的版本,自己compile了2.x的QEMU |
是跑起來,但還得去搞定網路介接的問題 |
喔....實在真的是...天啊!!是在折磨誰啊!! |
又在pi kernel 網站上看到說有pi docker可用 |
我實在是懶得再試QEMU,就去看了該篇連結 |
在Ubuntu 16.04安裝了docker package之後 |
照著指令執行..... |
docker run -it lukechilds/dockerpi |
ㄝ.....真的可以開一個pi 作業系統 |
哈....哈.....可是不會用阿~~ |
我又沒接觸過docker............ |
恩....好吧~~就再上網找書吧~~ |
嗯....看起來有本不錯的書 |
而且是2019年出版的 |
Docker in Action, 2nd Edition |
看了2~3天吧~~ |
就用下面的步驟建出我要的環境 |
你要是一直用docker hub上的image |
當然每次叫起container |
資料會被清空 |
我看過書上寫docker創始人的歷史 |
它應該是套用github的觀念 |
基本上我的做法就是 |
1.把docker image拉回來 |
docker pull lukechilds/dockerpi |
2.把這個image存成我的 |
docker save -o raspberrypi.tar lukechilds/dockerpi |
3.砍掉下載回來的image |
docker rmi lukechilds/dockerpi |
4.把之前的tar檔放進我的repository |
docker load -i raspberrypi.tar |
在這之後,要另起一個host主機的ssh session |
5.我們看一下image的現狀 |
docker images |
6. 啟動一個可以互動的container |
因為至少要能開通ssh |
而且要指定能由host主機進到container的22 port |
docker run -it -p 5022:22 7c3e811cebaa |
7. 看container的狀態 |
docker ps |
8.我們來看一下它可以連通的IP吧 |
docker inspect 5041b122b41b |
我只擷取我們要看的重點 |
9.再來就是登入步驟4所開啟來的互動tty |
預設pi/raspberrypi |
然後sudo su - 切換成root |
用來啟動ssh daemon |
我習慣直接下指令 |
systemctl enable ssh |
systemctl start ssh |
當然raspbian有它的管理介面可以啟動 |
raspi-config |
10.我們來從另一個host session進行登入測試吧~~ |
ssh -p 5022 pi@172.17.0.2 |
11. 再來就是上傳我之前反應給github nerd的問題 | |
為什麼要從source compile | |
因為nerd在deb安裝似乎沒啟用 | |
你有興趣的話 | |
可以看Nagios 4 query handler : nerd這個case | |
case裡頭給了一版的branch |
這一版configure --enable_nerd是不會出錯的 |
不然你就得拿以前舊版的來使用 |
當然你也可以不要用nerd |
但我個人認為,它是個很重要的功能 |
scp -P 5022 nagioscore-4.4.5_nerd_fix.zip root@172.17.0.2:~ |
12. 最後當然就是安裝 |
groupadd nagios |
groupadd nagioscmd |
useradd -g nagios -G nagioscmd -d /home/nagios nagios |
mkdir -p /home/nagios/etc |
mkdir -p /home/nagios/var |
mkdir -p /home/nagios/plugins |
./configure --prefix=/home/nagios \ |
--sysconfdir=/home/nagios/etc \ |
--localstatedir=/home/nagios/var \ |
--libexecdir=/home/nagios/plugins \ |
--with-command-group=nagioscmd \ |
--enable-nerd \ |
--with-httpd-conf=/etc/apache2/sites-enabled |
make && make install |
安裝步驟你當然可以完全按照官方的文件 |
我原本想說,docker 在開發上這麼方便 |
container 或者image很容易就portable |
結果昨晚我嘗試把container export |
或者commit之後, save 為tar 檔 |
想把這些archive 檔匯入暈倒平台 |
結果window 的docker engine |
需要打開Hyper-V |
看起來是跟我筆電上的VirtualBox衝到 |
因為Hyper-V一起動,我的VM就叫不起來了 |
只好把Oracle VirtualBox移除掉 |
讓docker desktop for windows能夠順利安裝 |
但就是不能用,docker engine其實重起了一遍 |
網路上其實早就有人反應了這個問題 |
Docker does not start on Windows 10 |
另外就是要把它匯入家裡筆電的ubuntu docker |
container import比較麻煩 |
因為得去查看source 執行甚麼指令 |
我看了一下,像是entrypoint.sh等 |
因此啟動匯入的container image需要帶入該指令 |
才能開得起來,但是...問題來了 |
所有變更都不見了 |
在source端commit container |
再把image匯出搬到另一台主機 |
也一樣.......全部的變更都消失了 |
好吧....至少有個開發環境了 |
docker的問題,待研究囉~~ |
安裝freetds,參考"怎麼用Perl DBI" |
安裝Sybase_DBD之前 |
需要先安裝DBI |
得用apt來安裝 |
apt-get install libdbi-perl |
想要借用別人的測試環境來測連通 |
怎麼測就是有問題 |
為了確認是不是freetds本身的問題 |
我就安裝了linux sql server |
及起了一個sql server 的container |
測完之後........應該是routing問題 |
host主機上的sql server 及 |
sql server container都可以連通 |
但我還是用tcpdump去看了封包的流向 |
哈.... |
然後再從其中一台測試機去tracert IP |
因為是另一個機房,應該有172 網段 |
所以封包繞到最後就不見蛋了 |
perl 的local setting 也是有點問題 |
export LANGUAGE="en_GB.UTF-8" |
export LANG=en_GB.UTF-8 |
export LC_ALL=en_GB.UTF-8 |
locale-gen en_GB.UTF-8 |
dpkg-reconfigure locales -> 預設選 en_GB.UTF-8 它 |
就解決了 |
參考How to fix Perl warning setting locale failed on Raspbian |
Perl 出現 Setting locale failed 的解決辦法 |