2017-10-12 228 views
1

我是Docker的新手。我正在嘗試在Ubuntu映像上安裝捆綁軟件包作爲父映像。通過Dockerfile安裝包時出錯

這裏是我的Dockerfile樣子 -

FROM ubuntu 
RUN apt-get update 
RUN apt-get update && apt-get install -y curl 
RUN apt-get remove -y openssh-client 
RUN apt-get autoclean && apt-get update && apt-get install -y openssh- 
server 
#INSTALL ESSESNTIAL PACKAGES 
#RUN apt-get -y install zsh htop 
RUN DEBIAN_FRONTEND="noninteractive" apt-get install -y mysql-server 
#RUN curl -sSL https://rvm.io/mpapis.asc | gpg --import - 
RUN apt-get install -y software-properties-common 
RUN apt-add-repository -y ppa:rael-gc/rvm 
RUN apt-get update && apt-get install -y rvm 
RUN /bin/bash -l -c "rvm install ruby-2.2.3" 
ENV app /app 
RUN mkdir $app 
WORKDIR $app 
ADD . $app 

#RUN ssh-keygen -f id_rsa -t rsa -N '' 
#RUN mkdir /root/.ssh 
#RUN ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts 
RUN /bin/bash -l -c "gem install bundler" 
RUN /bin/bash -l -c "bundle -v" 
RUN apt-get update && apt-get install -y git 
RUN /bin/bash -l -c "bundle install" 

在運行這個Dockerfile,我得到了bundle install命令是錯誤的,我得到的錯誤Host key verification failed. fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository exists. 我嘗試使用交互模式運行bundle install命令,但我也有類似的錯誤。請幫我解決這個問題,現在我已經被阻止了一段時間。

此外,當我在進行一些更改後構建圖像時,ssh-keys不再出現在泊塢窗圖像上。當我退出交互模式並再次登錄時,同樣的情況發生,當我再次登錄時,我新添加的軟件包不會顯示出來。我嘗試了改變,但問題仍然存在。我無法弄清楚爲什麼會發生這種情況。

+0

我假設你正在使用'SSH鍵在您的github訪問。但是我沒有看到你將SSH密鑰添加到Dockerfile中? –

+0

我創建了'ssh-keys'一次,它存儲在app目錄中。我將公鑰添加到Github,完成之後,我將'ssh-keygen'行註釋掉了。我不知道你的意思是把'ssh-keys'加入到我的Dockerfile中,但是這是我添加'ssh-keys'所遵循的一系列步驟。請讓我知道,如果我在這裏失去了一些東西。 – frank

回答

0

bundle install需要訪問私人回購時,這種錯誤很常見。例如
docker-library/golang issue 33

另一種方法是在一個私有和公共密鑰中進行復制,該私鑰和公用密鑰可以訪問相關存儲庫。這是不太安全的,因爲密鑰將永遠嵌入在該映像中(即使在稍後的RUN中被刪除),它們不會被刪除,只是隱藏在該文件系統層中,但如果從該下層運行容器圖像層。

因此,對於測試中,取消你的線條,並添加

COPY yourPrivateKey /root/.ssh/id-rsa 
COPY yourPublicKey /root/.ssh/id-rsa 

參見 「How to cache bundle install with Docker

你應該RUN bundle install第一,然後ADD . $app

+0

我以交互模式複製了這些文件,但這似乎並不奏效。我發現在修改父圖像後,我還必須提交更改。謝謝您的幫助! – frank