2017-05-23 6 views
1

私はJockkinsをDockerコンテナで実行しています。ホームディレクトリはホストボリューム内にあり、コンテナの更新が実行されたときにビルド履歴が確実に保持されます。Dockerfileで変更が加えられた場合、Dockerはマウント時にボリュームの内容を更新しますか?

ホームディレクトリに追加のファイルを作成するために、コンテナを更新しました。新しいコンテナを引っ張ると、変更されたファイルが表示されません。

ENV JENKINS_HOME=/var/jenkins_home 
RUN mkdir -p ${JENKINS_HOME}/.m2 
COPY settings.xml ${JENKINS_HOME}/.m2/settings.xml 
RUN chown -R jenkins:jenkins ${JENKINS_HOME}/.m2 
VOLUME ["/var/jenkins_home"] 

私はこのようなコンテナを実行しています:

docker run -v /host/directory:/var/jenkins_home -p 80:8080 jenkins 

私は前回の実行ジェンキンスを持っていたので、ホームディレクトリがすでにホスト上に存在します。新しいコンテナを取り出して実行すると、ファイル.m2/settings.xmlが作成されていないことがわかります。なぜこれはどうですか?基本的には

+0

ディレクトリが正常に構築された場合は、コンテナ内部を監視しようとしましたか?コンテナを正しく再構築してもよろしいですか?ビルドプロセスにエラーがありますか?例えばディレクトリが存在しないためファイルをコピーできないことを確認しますか? – Gabbax0r

+0

'docker build'コマンドは完了まで実行されます。ビルド中にエラーが報告されることはありません。あなたはコンテナの中を見守っていますか? 'docker exec -it jenkins/bin/bash'を実行し、コンテナの中に' .m2'というディレクトリがないことを確認します。 – John

+0

変数dir名なしでcpを試してください。 RUN mkdir /.m2 COPY settings.xml /.m2/settings.xml – Gabbax0r

答えて

1

あなたが実行します。

docker run -v /host-src-dir:/container-dest-dir my_image 

あなたはこのコマンドは、ホストディレクトリをマウントDocs

$ docker run -d -P --name web -v /src/webapp:/webapp training/webapp python app.py 

から何/host-src-dir

であり、/ srcにして、あなたの/container-dest-dirをオーバーレイします/ webappの コンテナに追加します。パス/ webappがすでに コンテナのイメージ内に存在する場合、/ src/webappマウントはオーバーレイされますが、既存のコンテンツは は削除されません。マウントが解除されると、内容は再び にアクセスできます。これは、 マウントコマンドの予想される動作と一致しています。

このSOの質問は(すなわち、コンテナがソースであり、ホストが宛先である)あなたがそれ他の方法で回避したいと思われるもdocker mounting volumes on host

関連しています。ここで

は、回避策です:これはあなたを与えるだろうdocker run --name=my_container my_image

  • 実行docker inspect --format='{{json .Mounts}}' my_container

    1. はあなたDockerfile

      -vすなわちなし
    2. 実行してボリュームを作成します。同様の出力:

      それは容器上にあるとして、あなたのディレクトリを意味

    [{"Name":"5e2d41896b9b1b0d7bc0b4ad6dfe3f926c73","Source":"/var/lib/docker/volumes/5e2d41896b9b1b0d7bc0b4ad6dfe3f926c73/_data","Destination":"/var/jenkins_home","Driver":"local","Mode":"","RW":true,"Propagation":""}]

    は残念ながら、私はそれではなく、特定のホストディレクトリにマウントさせるための方法を知らないホストディレクトリ/var/lib/docker/volumes/5e2d41896b9b1b0d7bc0b4ad6dfe3f926c73/_data

    に取り付けました。

  • 関連する問題