2016-11-21 23 views
2

ドッカーでコンテナを作成しようとしています。それは通常うまく動作しますが、私は突然問題に直面して解決する方法を知っています。dockerコンテナでapt-getパッケージを見つけることができません

FROM ubuntu:14.04 

RUN apt-get update && \ 
    apt-get upgrade -y \ 
    apt-get install -y openssh-server && \ 
    mkdir /var/run/sshd 

RUN echo root:root | chpasswd 
EXPOSE 22 
CMD ["/usr/sbin/sshd", "-D"] 

、それが次のエラースロー更新を取得のapt-になる:

  • E:
をインストールするパッケージを見つけることができません:apt-getの
  • Eパッケージを見つけることができませんが

    イメージが標準のubuntu 14.04に基づいている場合、これはどのように可能ですか?

  • +0

    は、あなたが2に欠ける –

    +3

    須藤はapt-getの更新を実行してみてくださいあなたのDockerfileに&& – user2915097

    +0

    Sudoが本当に問題でした。それが必要であることを知らなかった。 Thanks @charantej –

    答えて

    5

    あなたが終了しなかったあなたのapt-getは、それが次の行に「パッケージ」をインストールしようとしたので、&&でコマンドをアップグレードしてください。それはこの問題が発生したときに私が見ることのために簡単になりました(コピー/少し楽に貼り付けるなります)ので、私は、各行の先頭に私の&&を置くのが好き:

    FROM ubuntu:14.04 
    
    RUN apt-get update \ 
    && apt-get upgrade -y \ 
    && apt-get install -y \ 
         openssh-server \ 
    && mkdir /var/run/sshd 
    
    RUN echo root:root | chpasswd 
    EXPOSE 22 
    CMD ["/usr/sbin/sshd", "-D"] 
    
    +1

    答えをありがとう。私の質問は、私が今までに最も大きな脳を持っていたように感じています。 –

    0

    これは機能します。

    FROM ubuntu 
    RUN apt-get update -y 
    RUN apt-get upgrade -y 
    RUN apt-get install -y openssh-server 
    RUN mkdir /var/run/sshd 
    
    RUN echo root:root | chpasswd 
    EXPOSE 22 
    CMD ["/usr/sbin/sshd", "-D"] 
    
    +1

    これは一度しか動作せず、その後数か月後に更新値がキャッシュされたままになり、Dockerfileに変更すると予期しないエラーが発生する可能性があります。これが推奨されない理由については、[ベストプラクティス](https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#/apt-get)を参照してください。 – BMitch

    +0

    @BMitch ありがとう、それを知らなかった。 – Xenwar

    関連する問題