我是Docker的新手。我试图在ubuntu图像上安装bundle作为父图像。
这是我的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
命令,但我也遇到了类似的错误。请帮我解决这个问题,我已经被禁止了一段时间了。
此外,当我在进行一些更改后构建图像时,在docker镜像上不再出现ssh-keys。当我退出交互模式并再次登录时,同样发生,当我再次登录时,我新添加的包不会显示。我尝试提交更改,但问题仍然存在。我无法弄清楚为什么会这样。
答案 0 :(得分:0)
当bundle install
需要访问私人回购时,这种错误很常见
例如,请参阅docker-library/golang issue 33。
另一种方法是在私钥和公钥中进行COPY,该私钥和公钥可以访问有问题的存储库。这不太安全,因为密钥将永远嵌入在该图像中(即使在稍后的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