配置 執行
問題與解決
總結使用runc與oci-image-tool執行容器中雖然成功使用
注: 本文命令均在ubuntu 18.04x64下執行通過
getting image source signatures
copying blob 89d9c30c1d48 done
copying config 759e71f0d3 done
writing manifest to image destination
storing signatures
使用oci-image-tool create --ref platform.os=linux alpine alpine-bundle
製作符合oci規範的映象,oci-image-tool的安裝與使用參考image-tools github
eric@ubuntu:~/images_tmp$ ls -l alpine-bundle/
total 8
-rw-rw-r-- 1 eric eric 217 nov 9 11:51 config.json
drwxr-x--- 19 eric eric 4096 nov 9 11:51 rootfs
rootfs為根檔案系統,config.json
為符合runtime-spec
的配置檔案
注: 此處要執行的是具有root許可權的容器,因此不建立新的user namespace
capabilities許可權資訊: 容器必須具有許可權去執行操作,config.json檔案中可以現在容器內部許可權
mount掛載資訊: 系統級容器需要掛載必備的檔案系統,如proc sys cgroup
等
檔案系統中目錄、檔案的可讀可執行許可權: 從根目錄到容器檔案系統內的所有資料夾,以及檔案系統內的所有檔案/資料夾(/home/.../alpine-bundle/rootfs/*
)需要至少具有rwxrwxr-x(775)許可權,否則可能會遇到各種各樣的permission denied
,可以參考can』t change to home directory, unable-to-su-with-root-bin-bash-permission-denied的第二個回答
如果按照上述過程執行的話應該不會遇到問題,如下的問題是我在摸索過程中遇到的,感興趣的可以參考。
root執行runc run
出現chdir
錯誤
原因是目標目錄的owner與當前使用者(root)不同,乙個解決方案是chown,參考#2086
alpine容器內新增使用者adduser
出錯 -permission denied
容器許可權 - 容器需要setuid, setgid, setfcap
等許可權
目錄可執行位 - 容器檔案系統目錄及其父目錄需要有所有使用者的可執行許可權(755: rwxrwxr-x)
alpine容器login/su
出錯 -login: can't execute '/bin/ash': permission denied
目錄可讀、可執行位(chmod 755
),使用chmod 755 -r rootfs
命令將所有檔案許可權設為可讀,參考can』t change to home directory
鏈結庫的可執行位,使用ldd
命令檢視鏈結庫,與1同理,參考unable-to-su-with-root-bin-bash-permission-denied的第二個回答
對容器執行時runc的簡單理解
1 容器執行時,傳統意義上來說就是代表容器從拉取映象到啟動執行再到中止的整個生命週期 2 oci標準 docker 公司與 coreos 和 google 共同建立了 oci open container initial 並提供了兩種規範 3 docker和runc的關係 runc是乙個根據oci標...
runC 爆嚴重漏洞,使用容器的快打補丁
runc 是 docker,kubernetes 等依賴容器的應用程式的底層容器執行時,此次爆出的嚴重安全漏洞可使攻擊者以 root 身份在主機上執行任何命令。容器的安全性一直是容器技術的乙個短板。關於容器最大的安全隱患是攻擊者可以使用惡意程式感染容器,更嚴重時可以攻擊主機系統。2月11日,安全研究...
runC 爆嚴重漏洞,使用容器的快打補丁
開發四年只會寫業務 分布式高併發都不會還做程式設計師?runc 是 docker,kubernetes 等依賴容器的應用程式的底層容器執行時,此次爆出的嚴重安全漏洞可使攻擊者以 root 身份在主機上執行任何命令。容器的安全性一直是容器技術的乙個短板。關於容器最大的安全隱患是攻擊者可以使用惡意程式感...