Jenkins Container自動重啟(Podman設置)
簡單挑個:
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):
往下有systemd教學:
#首先確認容器運行:
sudo podman ps
建立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或名稱}
其他參考:
這時候嘗試透過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
#更新既有運行的容器為自動重啟:
docker update --restart unless-stopped {容器id}