取得docker container的啟動資訊

有時候常常要查詢一下當初docker container啟動的參數, 若使用docker-compose當然沒問題,可以直接查看yaml檔案,
若不是使用compose , 就比較麻煩了, 尤其是我常常使用指令的方式, 又常常沒有記錄下來指令, 就會出問題.

好險這些問題有解法

https://github.com/lavie/runlike

只要執行以下指令, 後面接 container name 就可以知道當初執行的相關設定了

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike <container Name>

很簡單直覺,java限制雙開的程式寫法

private static final int PORT = 9999;
private static ServerSocket socket;    

private static void main() {
  try {
    //Bind to localhost adapter with a zero connection queue 
    socket = new ServerSocket(PORT,0,InetAddress.getByAddress(new byte[] {127,0,0,1}));
    // 正常流程
    //
  }
  catch (BindException e) {
    // 異常流程
    System.err.println("Already running.");
    System.exit(1);
    Runtime.getRuntime().halt(0);
  }
}

Linux 將命令模式下執行程式,所輸出的紀錄引導到檔案

以java為例,

System.out.println("log ...")

可以在console下看到結果, 但我們若需要未來分析使用, 就必須導到檔案.

執行時可以增加以下參數

java  -jar xxx.jar   > a.out  2>&1

以前常常搞不清楚, 現在也還是一樣不太懂, 沒差拉, 這樣就可以用了, 然後 tail -f a.out 就可以在螢幕看到即時訊息, 事後也能將a.out保存起來呢.

關於Java Single Instance只能執行一次的解法

我找了2資源, 想法都很不錯, serversocket 的做法最容易接受 , 但真的被反組譯修改,也是防不勝防,除非連程式都簽章加密處裡.

https://rosettacode.org/wiki/Determine_if_only_one_instance_is_running#Java

http://www.sauronsoftware.it/projects/junique/manual.php#5

launch4j把java程式轉成exe可執行檔案

一直以來,我都是讓使用者執行bat, 開啟命令提示視窗, 來啟動java程式,但 這樣很難讓麻瓜接受使用,

因此網路上找到好用的轉換程式, 可以直接把jar檔案轉換成exe檔案, 這樣就方便多了

使用方式可點這裡看教學 ,

比較值得注意的是,可以勾選single Instance , 限制只能執行一次, 不能多次執行, 這功能真是太棒了

docker安裝peertube影音平台

peertube是開源的串流影音平台, 很適合拿來管理私人影音檔案.

本文安裝的先決條件是:
已備有httpd反向代理, 以及lets encrypt ,
因此不使用peertube官方自帶的webserver與cerbot, 以免造成管理上的困擾

帳號密碼: guest/guest

https://how.itworks.ltd/iammis/技術文章/HowTo/10034_(docker)安裝peertube.txt

ubuntu 安裝oracle jdk 8

1. 先到oracle網站下載

https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
下載 jdk-version-linux-x64.tar.gz 

2.   解開 tgz

sudo tar zxvf jdk-version-linux-x64.tar.gz -C /usr/lib/jvm

3. 安裝到 update-alternatives

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0_version/bin/java" 1

4. 設定oracle java

sudo update-alternatives --config java 

pfsense的openvpn用戶端設定檔案如何移除

pfsense設定openvpn非常方便, 也有package能協助匯出windows用戶端安裝程式 , 再給使用者無腦安裝, 可以省下IT很多時間.

但是若使用者想要刪除設定檔案, 打開openvpn gui預設的資料夾,卻找不到設定檔案, 就無法刪除設定檔案.

查了一下設定檔案profile的位置, 總共有兩個地方.
1. openvpn gui預設的
%USERPROFILE%/OpenVPN/config

2.program file裡面
%ProgramFiles%/OpenVPN/config

pfsense用戶端安裝的時候, 設定檔案卻放在 ProgramFiles 裡面, 超怪的, 就算是新版pfsense 2.5.1 也跟2.4.5p1一樣沒變, 此時只要到正確的目錄, 刪除相關檔案,重啟常駐的openvpn gui 就可以了

ubuntu 20.04 安裝docker

1. 
sudo apt-get update
sudo apt-get install \
     apt-transport-https \
     ca-certificates \
     curl \
     gnupg \
     lsb-release
	 
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
	 
echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  
sudo apt-get install docker-ce docker-ce-cli containerd.io

2. 自訂存放目錄

修改 /lib/systemd/system/docker.service
 從
ExecStart=/usr/bin/docker daemon -H fd://
 改成
ExecStart=/usr/bin/docker daemon -g <自訂目錄> -H fd:// 

重啟 docker 
systemctl stop docker
systemctl daemon-reload
systemctl start docker

完成
1 2 3 ... 36