2017-12-18 3 views
0

以前は、Docker in Docker(DIND)モードでJenkinsを実行していました。つまり、Jenkinsドッカーコンテナ内にドッカーデーモンを実行しています。しかし、多くの問題(上記のリンクに記載されている問題)のために、我々はこのアプローチから離れて、コンテナの起動時にホストデーモンを単にボリュームとしてマウントすることを決めました。dockerデーモンをコンテナ経由で使用しているときに、docker-composeの相対フォルダを作成していますか?

-v /var/run/docker.sock:/var/run/docker.sock 

しかし、Docker Composeという相対パスをマウントするときには、コンテナ内で開始され、DINDモードで正常に動作する問題が発生します。このドッキングウィンドウ・コンファイルを考えてみましょう:

myimage: 
    build: . 
    environment: 
    LANG: C.UTF-8  
    working_dir: /code 
    volumes: 
    - ../../../:/code 
    - ~/.m2/repository:/root/.m2/repository 
    - ~/.gradle:/root/.gradle 

は、これまでは コンテナから、たとえば ../../../フォルダのため、すべてのフォルダをマウントされたが、今では ホストからそれらをマウントしようとしているようです。ホスト上のディレクトリ構造を調べると、 docker-composeのようにコンテナからディレクトリ構造が複製され、このフォルダを空にするようにマウントしようとしているようです。

私の質問は、どのようにホストからドッカーデーモンを使用するときにDocker Composeで相対パスをマウントできるのですか?

+0

は理解していない私は改善することができるように、私が知ってみたい:このように、単純に続いてホストのフォルダを使用するようにコンファイルを変更

-v ./code:<path-to-../../..> -v ./m2-repo:.../.m2/repository 

とジェンキンスコンテナを起動将来の私の質問。 – Johan

答えて

0

ホストの相対パスがJenkinsコンテナ内で同じであることを確認する必要があります。

これは実際には相対パスではなく、ドッカーの作成は、ドッカーホストが必要とする絶対パスに相対パスを変換するのに最善を尽くしています。ドッカーホスト上のすべてのパスが新しいコンテナを作成するために評価され、ドッキングクライアントをリモートまたはコンテナ内で実行していることはわかりませんし、現在どのディレクトリにいるのかわかりません。

As別のオプションでは、名前付きボリュームに切り替えることを検討し、Jenkinsコンテナ内の同じ名前のボリュームを他のコンテナと同じようにマップすることもできます。

-1

Dockerにはクライアントサーバーアーキテクチャがあり、ホスト上にあるドッカーソケットをマウントすると、単にホストdocker deamonmと通信します。したがって、すべてのホストボリュームパスは、ホスト上のパスとして解釈されます。

解決するには、jenkinsコンテナのディレクトリをホストにバインドしてから、ホストフォルダをマウントポイントとして使用する必要があります。これがdownvotedれた理由

myimage: 
    build: . 
    environment: 
    LANG: C.UTF-8  
    working_dir: /code 
    volumes: 
    - ./code:/code 
    - ./m2-repo:/root/.m2/repository 
    ... 
+0

ありがとうございますが、この問題は、 'が各Jenkinsプロジェクトごとに異なることです。私は新しいプロジェクトが追加されるたびにボリュームのマウントを変更する必要がないようにしたいと思います(あなたの答えを落としていないことに注意してください)。 – Johan

関連する問題