RHEL8 三海豹安裝與容器內使用研究
先用Terraform建立RHEL8機台,腳本如下:
參考YT影片嘗試學一下RHEL8的三海豹的安裝:
https://www.youtube.com/watch?v=EXpIrlkCDDY
#執行以下指令來查看可用的模組:
sudo yum module list
後面還有顯示Maven有的沒的:
其中我這邊需要用到的是->container-tools
#執行上述工具安裝執行:
sudo yum module install container-tools -y#2024/04/26補充RHEL9安裝(如下下圖):
sudo dnf install container-tools -y
過程中要打一次yes,最後看到:
接著確認有沒有三海豹:
讚讚讚,比podman官網的安裝教學有用多了!
#此時可以看以下目錄,查看對應的image庫來源位置:
cat /etc/container
往下拉也有對於一個pull image的image庫解說:
接著我想要實驗的是Jenkins Container內掛podman的使用
(就像我學Nana教的那樣,在Jenkins Container內任意調用host的docker)
但是podman不是Daemon機制,沒有類似docker sock的設置
我先試著拉一下隨便一個image看看podman存放image的目錄在哪
然後看一下自己登入帳號的uid:
也可以:
實際找到podman儲存image cache的位置是:
不過麻煩的是我發現,執行podman rmi不會讓這個檔案縮小...
不過理論上應該背後有循環機制來清除這方面的cache才對!..應該...
不過爬文得知image相關儲存是在隔壁的目錄storage內:
#在隔壁目錄才是預設儲存image的目錄:
ll ~/.local/share/containers/storage#但是其實這邊應該都是相關podman使用的目錄:
ll ~/.local/share/containers
大概上面只是做完podman基本安裝在RHEL8
在容器內使用Podman研究
參考這篇整理(link)
嘗試以下
1.Rootful Podman in rootful Podman with — privileged
#執行以下:
Rootful Podman in rootful Podman with --privileged echo hello
這個還有進階一點的,先在host建立目錄./mycontainers
然後改執行以下,就能省一點時間:
#執行以下:
podman run --privileged -v ./mycontainers:/var/lib/containers quay.io/podman/stable podman run ubi8 echo hello
2.Rootless Podman in rootful Podman with --privileged
#執行以下:
podman run --user podman --privileged quay.io/podman/stable podman run ubi8 echo hello
那篇文章內還有docker container內跑podman的我先跳過
3.Rootful Podman in rootful Podman without --privileged
#執行以下:
podman run --cap-add=sys_admin,mknod --device=/dev/fuse --security-opt label=disable quay.io/podman/stable podman run ubi8-minimal echo hello
其中的option解釋:
#解釋上面用到的option設置:
--cap-add
Add Linux capabilities
其中加入的sys_admin與mknod分別表示
CAP_SYS_ADMIN(這是為了podman在容器內以root運行,要mount file system需要)
CAP_MKNOD(為了podman在容器內以root運行時,在/dev目錄建立devices需要)
4.Rootless Podman in rootful Podman without — privileged
#執行以下:
podman run --user podman --security-opt label=disable --security-opt unmask=ALL --device /dev/fuse -ti quay.io/podman/stable podman run -ti docker.io/busybox echo hello
#解釋上面用到的option設置:
--security-opt
也就是Security Options
其中label=disable表示Disable SELinux(相關解說如下片段圖)
文中還有很多remote mode的我也先跳過
5.Rootless Podman running rootless Podman
#執行以下:
podman run --security-opt label=disable --user podman --device /dev/fuse quay.io/podman/stable podman run alpine echo hello