Podman為什麼 buildah 執行支持
為什麼 buildah 執行支持 --hostname
,但不支持 podman exec?
buildah run
和podman exec
在活動容器中執行程序,buildah-run - Run a command inside of the container. podman-exec - Execute a command in a running container
但是,只
buildah run
支持一個--hostname
選項?為什麼這些命令不相等?為什麼他們有不同的能力?換句話說,buildah 目前有一個損壞的
--hostname
選項,但我不清楚它為什麼會起作用。使用 podman啟動容器時會設置選項,而使用 buildah 已完成,buildah from
所以不應該buildah from
有--hostname
參數嗎?
這裡的原因需要一點解釋,
- 容器是概念上鍊接的任何名稱空間和功能集。
- 當容器中的任何程序目前正在執行時,容器正在執行(狀態)。
- 大多數命名空間(我相信的使用者除外)必須在容器執行之前設置。
- 該命名空間中的所有程序都可以看到命名空間中的更改。
buildah run
啟動一個未執行的容器,並初始化這些命名空間。因為它知道命名空間內沒有其他東西在執行,所以它不必擔心更改它們的不利影響。podman exec
獲取一個正在執行的容器並使用相同的 PID(和其他)命名空間啟動另一個程序。因為它不初始化命名空間,所以命名空間內的任何更改都會影響附加到這些命名空間的所有其他程序。因此,名稱空間修改被禁用。
buildah run 與支持 –hostname 的 podman run 更接近。
podman exec 必須執行到正在執行的容器中,而 buildah run 和 podman run 創建新容器。
BTW buildah run 的目的是執行一個容器來幫助建構一個容器鏡像。Podman run 更通用。