2016-05-11 11 views
1

ubuntuベースのドッカーコンテナでPythonとnodejのバージョンを固定するのに問題があります。ubuntu dockerコンテナ内で利用可能なパッケージのバージョンは、ホストOSによって異なります

私は問題があるのは、コンテナ内で利用可能なパッケージのバージョンがホストによって異なるためです。私はローカルで実行されているUbuntuのコンテナの中からいくつかのapt-cache madisonのコマンドを実行して、これらのバージョン文字列を決定し

RUN apt-get -y install "python=2.7.5-5ubuntu3" build-essential "nodejs=6.1.0-1nodesource1~trusty1" vim jq 

は、私は、次のコマンドを追加することによって、DebianパッケージをnodejsのpythonのバージョンとDockerfileに指定したいです私のOSX el-capitanラップトップで。すべてが機能します。 Amazonのインスタンスで実行されているCI環境で同じコンテナを構築しようとすると、指定されたバージョンが利用できないため、失敗します。

何が起こっているのかを正確に示す出力です。 CI環境で

(ドッカマシンVBOXラッパー経由)OSXエルキャピタン

$ uname -a 

Darwin Kyles-MacBook-Pro.local 15.3.0 Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64 x86_64 

$ # now get into the container 
$ docker exec -it named_container bash 
[email protected]:/src# apt-cache madison nodejs 

nodejs | 6.1.0-1nodesource1~trusty1 | https://deb.nodesource.com/node_6.x/ trusty/main amd64 Packages 
nodejs | 0.10.25~dfsg2-2ubuntu1 | http://archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages 
nodejs | 0.10.25~dfsg2-2ubuntu1 | http://archive.ubuntu.com/ubuntu/ trusty/universe Sources 
nodejs | 6.1.0-1nodesource1~trusty1 | https://deb.nodesource.com/node_6.x/ trusty/main Sources 

[email protected]:/src# apt-cache madison python 

python | 2.7.5-5ubuntu3 | http://archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages 
python-defaults | 2.7.5-5ubuntu3 | http://archive.ubuntu.com/ubuntu/ trusty/main Sources 

同じシーケンス - AMI Linuxの場合:ここで

$ uname -a 

Linux ip-10-250-160-248 4.4.8-20.46.amzn1.x86_64 #1 SMP Wed Apr 27 19:28:52 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux 

$ # now get into the container 
$ docker exec -it named_container bash 
[email protected]:/src# apt-cache madison nodejs 

nodejs | 6.1.0-1nodesource1~xenial1 | https://deb.nodesource.com/node_6.x xenial/main amd64 Packages 
nodejs | 4.2.6~dfsg-1ubuntu4 | http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages 
nodejs | 4.2.6~dfsg-1ubuntu4 | http://archive.ubuntu.com/ubuntu xenial/universe Sources 
nodejs | 6.1.0-1nodesource1~xenial1 | https://deb.nodesource.com/node_6.x xenial/main Sources 

$ [email protected]:/src# apt-cache madison python 

python | 2.7.11-1 | http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages 
python-defaults | 2.7.11-1 | http://archive.ubuntu.com/ubuntu xenial/main Sources 

がDockerfileの始まりである、I ENTRYPOINTとCMDを変更しました。

FROM ubuntu 

MAINTAINER Kyle Zeeuwen 

RUN apt-get update 
RUN apt-get -y install curl 
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - 
RUN apt-get -y install "python=2.7.5-5ubuntu3" build-essential "nodejs=6.1.0-1nodesource1~trusty1" vim jq 

CMD ["sleep", "3600"] 

私のクエストイオン:私は確実のpythonを設定するように変更する必要があるとOSXとは何であるのLinux AMI

  • の両方を含むホスト環境の範囲内でドッキングウィンドウコンテナの構築が動作するようなバージョンをnodejs何

    1. それがUbuntuに別のディストリビューションを報告させるでしょうか?

  • 答えて

    2

    バージョンが一致しない2つの理由があります。

    1. ベースイメージのバージョン:ベースイメージは、マシンのいずれかに最新ではありません。構築する前に必ずdocker pull ubuntuを実行するか、追加の--pullフラグを付けてビルドしてください。
    2. ドッカーキャッシュ:apt-get updateステップはキャッシュされ、キャッシュはあるマシンでは他のマシンよりも古くなります。キャッシュは決して無効化されないので、他のコマンドなしでapt-get updateを決して実行しないでください。代わりにRUN apt-get update && apt-get -y install curlを実行します。 docker build --no-cacheを実行して、キャッシュを使用していないことを確認することもできます。

    簡潔に言えば、docker build --pull --no-cacheで問題を解決する必要がありますが、前述のようにDockerfileも調整する必要があります。

    +0

    応答のおかげで両方の点が有効です。私はhttps://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/を読んでいるはずです! – zayquan

    関連する問題