RHEL8 三海豹安裝與容器內使用研究

RHEL8 + Podman蹦出新滋味!?

ZONGRU Li
7 min readJun 11, 2022

先用Terraform建立RHEL8機台,腳本如下:

參考YT影片嘗試學一下RHEL8的三海豹的安裝:

https://www.youtube.com/watch?v=EXpIrlkCDDY

#執行以下指令來查看可用的模組:
sudo yum module list

後面還有顯示Maven有的沒的:

其中我這邊需要用到的是->container-tools

右邊會看到裡面包含podman
#執行上述工具安裝執行:
sudo yum module install container-tools -y
#2024/04/26補充RHEL9安裝(如下下圖):
sudo dnf install container-tools -y

過程中要打一次yes,最後看到:

接著確認有沒有三海豹:

讚讚讚,比podman官網的安裝教學有用多了!

#此時可以看以下目錄,查看對應的image庫來源位置:
cat /etc/container

往下拉也有對於一個pull imageimage庫解說:

接著我想要實驗的是Jenkins Container內掛podman的使用

(就像我學Nana教的那樣,在Jenkins Container內任意調用hostdocker)

但是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

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

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

No responses yet