![](/img/trans.png)
[英]How do I run a docker container as a privileged user with user namespaces
[英]How do I run my Go application in the scratch container as the user "nobody?"
我不想以 root 身份在 docker 容器中運行任何東西。 我想要簡約的圖像。
我可以在 scratch-image 中毫無問題地運行我編譯的 Go 應用程序。 但是當我不希望它以 root 身份運行時(我假設它以 root 身份運行)並在 dockerfile 中定義 USER nobody 我得到
014/10/25 06:07:10 Error response from daemon: Cannot start container
4822f34e54e20bb580f8cd1d38d7be3c828f28595c2bebad6d827a17b4c2fe21:
finalize namespace setup user get supplementary groups Unable to find user nobody
這是我的 dockerfile
FROM scratch
ADD lichtpunkt_go_linux_amd64 /lichtpunkt_go_linux_amd64
ADD web /web
USER nobody
CMD ["./lichtpunkt_go_linux_amd64"]
EXPOSE 3001
編輯 - - - - - -
原來那個划痕是空的,非常空。
RUN useradd 將執行 /bin/sh -c useradd 但沒有 /bin/sh。 RUN ["useradd"] 會直接執行。 但是沒有用戶添加。 id 必須添加 rootfs.tar 並從零構建內容。
我將使用 debian,因為我不會在容器中以 root 身份運行任何東西,因為...
創建一個包含以下內容的文件,並將其作為/etc/passwd
COPY
到scratch
容器中。
nobody:*:65534:65534:nobody:/_nonexistent:/bin/false
您也可以COPY
/bin/false
; 或者您不這樣做,在這種情況下,嘗試登錄,因為nobody
會簡單地失敗。
su: failed to execute /bin/false: No such file or directory
在USER命令之前,添加以下行: ADD passwd.minimal /etc/passwd
使用文件passwd.minimal中的以下行: nobody:x:65534:65534:Nobody:/:
您仍然必須先添加用戶,然后才能將其與USER命令一起使用。
FROM scratch
ADD lichtpunkt_go_linux_amd64 /lichtpunkt_go_linux_amd64
ADD web /web
RUN useradd nobody
USER nobody
CMD ["./lichtpunkt_go_linux_amd64"]
EXPOSE 3001
事實證明,划痕是空的,非常空。
運行useradd會執行/ bin / sh -c useradd但沒有/ bin / sh。 RUN [“useradd”]將直接執行。 但是沒有useradd。 id必須添加rootfs.tar並從零開始構建東西。
我將使用debian,因為我不會在容器中以root身份運行任何東西,因為......
將容器中的根視為容器外的根
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.