2016-09-22 3 views
1

ビルド中にmove3ドッカーのイメージの/root/.m2に書き込まれたファイルが永続的でないのはなぜですか?ドッカーのMavenコンテナの〜/ .m2に書き込むことができません

シンプルdockerfile:

FROM maven:3-jdk-8 
RUN touch /root/.m2/testfilehere && ls -a /root/.m2 
RUN ls -a /root/.m2 
CMD ["bash"] 

は、次の出力を生成します。

$ docker build -t test --no-cache . 
Sending build context to Docker daemon 2.048 kB 
Step 1 : FROM maven:3-jdk-8 
---> 42e3884987fb 
Step 2 : RUN touch /root/.m2/testfilehere && ls -a /root/.m2 
---> Running in 1c1dc5e9f082 
. 
.. 
testfilehere 
---> 3da352119c4d 
Removing intermediate container 1c1dc5e9f082 
Step 3 : RUN ls -a /root/.m2 
---> Running in df506db8c1dd 
. 
.. 
---> d07cc155b20e 
Removing intermediate container df506db8c1dd 
Step 4 : RUN stat /root/.m2/testfilehere 
---> Running in af44f30aafe5 
stat: cannot stat ‘/root/.m2/testfilehere’: No such file or directory 
The command '/bin/sh -c stat /root/.m2/testfilehere' returned a non-zero code: 1 

最初のコマンドで作成されたファイルは、中間のコンテナが存在すると消えます。

また、これはubuntuイメージでは起こりません。単にmavenです。

編集:使用するADD hostfile /root/.m2/containerfileは回避策として機能しますが、私が欲しいものではありません。

答えて

1

に従うことで、起動時に実行されるスクリプトイメージ内の。コンテナは、ボリュームで実行すると、ボリュームのストレージis not part of the UnionFSは - そのデータが、コンテナの書き込み可能な層に保存されていないので:

データ量が連合ファイルをバイパスし、1つ以上の容器内に特別に指定されたディレクトリでありますシステム。

最初RUNコマンドは、ボリューム内のファイルを作成し、それは、独自のボリュームと仲介コンテナにあります。ファイルはボリューム内にあるため、イメージレイヤーに保存されません。

第2のRUNコマンドは、独自のボリュームを持つの新しい中間コンテナで実行されています。ボリュームには基本イメージからのコンテンツがないため、新しいコンテナではボリュームは空です。

ボリュームにデータをあらかじめ入力する場合は、見たようにDockerfileでボリュームを事前に設定する必要があります。

1

Mavenのドッキングウィンドウの画像は

あなたが見ることができるあなたのファイルを消去$ {MAVEN_CONFIG}とには、/ usr/share/Mavenの/ REFからコンテナで

ENTRYPOINT ["/usr/local/bin/mvn-entrypoint.sh"] 

が開始エントリポイント、エントリポイントのコピーファイルを持っています/root/.m2を0として定義されているためです。このリンクに

https://github.com/carlossg/docker-maven/blob/33eeccbb0ce15440f5ccebcd87040c6be2bf9e91/jdk-8/mvn-entrypoint.sh

+0

エントリポイントは問題ではありません。消去は、コンテナを実行する前に、すなわちファイル作成を行ったDockerfileコマンドの直後に行われる。 – npit

+0

このリンクの説明のとおり、https://docs.docker。 CMD/bin/bashを実行する直前にエントリポイントが実行される ls seconde timeを実行するときは、あなたはcopy_reference_file.log settings-docker.xmlを見ることができます これらはmaven refディレクトリからコピーされます – Thibaut

関連する問題