Jenkins Container自動重啟(Podman設置)

Jenkins Container自動重啟(Podman設置)

ZONGRU Li
6 min readNov 21, 2022

簡單挑個:

RHEL-8.6.0_HVM-20220503-x86_64–2-Hourly2-GP2

#依樣簡單安裝podman:
sudo yum module install container-tools -y
#原本:
sudo podman run -p 8080:8080 -p 50000:50000 -d \
-v jenkins_home:/var/jenkins_home \
docker.io/jenkins/jenkins:lts

#之後應該調整為運行Jenkins Container:
sudo podman run --name=jenkins_container -p 8080:8080 -p 50000:50000 -d \
-v jenkins_home:/var/jenkins_home \
docker.io/jenkins/jenkins:lts

然後參考到這篇(LINK):

這邊有描述podman run裡面的restart的option並不會起作用,畢竟跟docker走daemon不同

往下有systemd教學:

後面直接整理
#首先確認容器運行:
sudo podman ps
注意,這邊後面有自動產出容器名稱是gallant_mahavira

建立systemd service:

#我這邊用sudo來做,剛剛有看到上面容器有自動取名叫gallant_mahavira
#透過podman來建systemd service(這個只是印出來):
sudo podman generate systemd --new --name {上面容器名稱gallant_mahavira}
#或簡單輸出成檔案(我試過,不能指定到檔名,f後面只能空的...):
sudo podman generate systemd --new --name gallant_mahavira -f

參考:

#在來就是把這個檔案搬到systemd那邊,(如果是root身份,搬到/etc/systemd/system/):
#順便改檔案名稱
sudo cp {產出的service檔} /etc/systemd/system/container-jenkins.service

#若是non-root身份可以搬到~/.config/systemd/user/底下:
cp {產出的service檔} ~/.config/systemd/user/container-jenkins.service
#重新載入daemon:
sudo systemctl daemon-reload

#如果是non-root的daemon重新載入:
systemctl --user daemon-reload
#啟用做好的Service:
sudo systemctl enable container-jenkins.service

#如果是non-root則是:
systemctl --user enable {SERVICE_NAME.service}
#確認Service狀態(root):
sudo systemctl status container-jenkins.service

#確認Service狀態(non-root):
systemctl --user status {SERVICE_NAME.service}

systemd服務就建好了,接著先把既有運行的Jenkins容器關掉

#確認jenkins容器:
sudo podman ps

#關掉jenkins容器:
sudo podman stop {容器id或名稱}

#移除該容器:
podman container rm {容器id或名稱}

其他參考:

另外自己寫service(LINK)

這時候嘗試透過systemctl啟動Jenkins container

#我是root來起,所以:
sudo systemctl restart container-jenkins.service

直接暴力關機重開看看:

看起來OK!

#也可以在正常運作的systemd表內看到:
sudo systemctl list-units

#進階也可以:
systemctl list-units --type=service --state=active

另外看一下docker怎麼搞,參考官網(LINK):

#先看看這指令是做啥的:
sudo docker ps -q
看起來就是拿Container id
#更新既有運行的容器為自動重啟:
docker update --restart unless-stopped {容器id}

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet