簡體   English   中英

如何訪問Docker容器內的根文件夾

[英]How to access root folder inside a Docker container

我是Docker的新手,正在嘗試構建涉及執行npm install的映像。 我們的某些依賴項來自我們擁有的私有存儲庫,而我遇到的是與SSH相關的問題:

在此處輸入圖片說明

我意識到我沒有向文件提供任何形式的SSH詳細信息,並且在線上遇到了各種帖子,內容涉及如何在docker build命令中使用args做到這一點。

因此從這里開始 ,我在npm install命令運行之前將以下內容添加到了我的dockerfile中:

ARG ssh_prv_key
ARG ssh_pub_key

RUN apt-get update && \
    apt-get install -y \
        git \
        openssh-server \
        libmysqlclient-dev

# Authorize SSH Host
RUN mkdir -p /root/.ssh && \
    chmod 0700 /root/.ssh && \
    ssh-keyscan github.com > /root/.ssh/known_hosts

# Add the keys and set permissions
RUN echo "$ssh_prv_key" > /root/.ssh/id_rsa && \
    echo "$ssh_pub_key" > /root/.ssh/id_rsa.pub && \
    chmod 600 /root/.ssh/id_rsa && \
    chmod 600 /root/.ssh/id_rsa.pub

因此,使用提供的正確參數再次運行docker build命令,我確實在控制台中看到進一步的活動,提示正在使用我的SSH密鑰:

在此處輸入圖片說明

但是如您所見,我沒有收到no hostkey alg主機密鑰的錯誤消息,並且仍然收到相同的“主機密鑰驗證失敗”錯誤。 我想知道是否可以查看錯誤中引用的日志文件:

在此處輸入圖片說明

我是否需要運行映像才能連接到映像並瀏覽“ root”文件夾?

我希望我有道理,請保持溫柔,我是docker noob!

謝謝

docker build輸出中以—->開頭的行是有效的Docker映像ID。 您可以選擇其中任何一個,然后docker run它們:

docker run --rm -it 59c45dac474a sh

如果某個步驟實際上失敗了,那么一個有用的調試技巧是啟動在該步驟之前構建的映像,然后手動運行該命令。

請記住, 任何擁有您形象的人都可以做到這一點; 按照您構建它的方式,如果將映像推送到任何存儲庫,則ssh私鑰就可以使用了,您可能應該認為它已被破壞。 這是雙重事實,因為它也將以純文本形式出現在docker history輸出中。

暫無
暫無

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

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