簡體   English   中英

Dockerfile 中指令的默認用戶是什么?

[英]What is the default user of instructions in Dockerfile?

我做了一個實驗來檢查這一點。 以下是我的Dockerfile:

FROM ubuntu:bionic                                

RUN echo $UID > a.out && echo "hello" > a.out     
RUN useradd -m user      
RUN echo $UID > b.out                             

USER user 

a.out 和 b.out 的結果如下所示。

user@39370ee77a16:/$ cat a.out
hello
user@39370ee77a16:/$ cat b.out

我的問題是:

  1. root是默認用戶嗎?
  2. 為什么 Dockerfile 中的 $UID 什么也不顯示?

謝謝!

其他答案(到目前為止)尚未完全解決的是您的第二個問題:

為什么 Dockerfile 中的 $UID 什么也不顯示?

$UID是一個 bash 內部變量。 從 dockerfile 創建映像時,未使用 bash,因此未定義$UID ,因此使用它會返回一個空字符串。

為了使這個答案完整,即使它已經被回答:

root是默認用戶嗎?

這取決於FROM語句中的圖像是如何設置的。

它取決於基本映像,但在您的情況下,默認用戶是 root。 您可以從基礎映像或 Dockerfile 內部進行驗證。

FROM ubuntu:bionic 
RUN whoami

在您的情況下,您會看到hello因為您覆蓋了內容,請嘗試使用

RUN echo $UID >> a.out && echo "hello" >> a.out   

您可以使用更改用戶

USER my_user

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM