2016-08-18 3 views
1

私が使用してMacOSの上docker.bintray.io/jfrog/artifactory-oss:4.11.1を開始しようとしているマウントされたフォルダにフォルダを作成することはできませんDocker version 1.9.1, build a34a1d5なぜドッキングウィンドウコンテナは

彼らのガイドがいる彼らが永続的にするためにホストにデータと設定フォルダをマッピングすることをお勧めします

が公正な提案です:https://www.jfrog.com/confluence/display/RTF/Running+with+Docker#RunningwithDocker-RunningArtifactoryasaDockerPrivateRegistry

問題は、コンテナが起動しないことです。私は、/ tmpの

にマウントされたボリュームを設定すると

export ARTIFACTORY_HOME=$HOME/local.artifactory 
# just cleanup for now 
rm -rf $ARTIFACTORY_HOME 

docker run -d --name local.artifactory \ 
--hostname local.artifactory \ 
--privileged=true \ 
-p 80:80 \ 
-p 8081:8081 \ 
-p 443:443 \ 
-v $ARTIFACTORY_HOME/data:/var/opt/jfrog/artifactory/data \ 
-v $ARTIFACTORY_HOME/logs:/var/opt/jfrog/artifactory/logs \ 
-v $ARTIFACTORY_HOME/backup:/var/opt/jfrog/artifactory/backup \ 
-v $ARTIFACTORY_HOME/etc:/var/opt/jfrog/artifactory/etc \ 
docker.bintray.io/jfrog/artifactory-oss:4.11.1 

:それは私のドッキングウィンドウのコマンドがどのように見える、それは

/usr/bin/java 
Starting Artifactory tomcat as user artifactory... 
Max number of open files: 1048576 
Using ARTIFACTORY_HOME: /var/opt/jfrog/artifactory 
Using ARTIFACTORY_PID: /var/opt/jfrog/run/artifactory.pid 
touch: cannot touch `/opt/jfrog/artifactory/tomcat/logs/catalina.out': Permission denied 
/opt/jfrog/artifactory/tomcat/bin/catalina.sh: line 401: /opt/jfrog/artifactory/tomcat/logs/catalina.out: Permission denied 

** ERROR: Artifactory Tomcat server did not start. Please check the logs 

マウントされたボリュームにartifactory特定のフォルダやファイルを作成することはできませんマウントされたボリュームからファイルに文句を言います

export ARTIFACTORY_HOME=/tmp/local.artifactory

ドッキングウィンドウコンテナが起動しますが、私のマウントがドッキングウィンドウマシンVMに表示され、私はそれらにアクセスすることができます...

+0

待ち、 'rm -rf $ ARTIFACTORY_HOME'? –

答えて

1

現在存在しないホストボリュームをマウントすると、そのフォルダはroot権限でマウントされ(デフォルトのumaskは755です)、マウントされます。解決策は、クリーンアップステップの後にデータ、ログなどのフォルダを作成し、コンテナのUIDとして書き込むことができるアクセス許可でそれらを構成することです。ここで

は、あなたが問題を見ているところの例です:

$ docker run -v $HOME/data/docker/test-missing:/missing -u 100 --rm -it busybox 
/$ ls -al /missing 
total 8 
drwxr-xr-x 2 root  root   4096 Aug 18 19:18 . 
drwxr-xr-x 19 root  root   4096 Aug 18 19:18 .. 
/$ touch /missing/file 
touch: /missing/file: Permission denied 
/$ exit 
$ ls -al $HOME/data/docker/test-missing/ 
total 8 
drwxr-xr-x 2 root root 4096 Aug 18 15:18 . 
drwxr-xr-x 31 bmitch bmitch 4096 Aug 18 15:18 .. 

スクリプトを修正するためにあなたのrmdocker runの間で追加する行は次のようになります。

mkdir -p $ARTIFACTORY_HOME/data $ARTIFACTORY_HOME/logs \ 
    $ARTIFACTORY_HOME/backup $ARTIFACTORY_HOME/etc 
chmod -R 777 $ARTIFACTORY_HOME/data $ARTIFACTORY_HOME/logs \ 
    $ARTIFACTORY_HOME/backup $ARTIFACTORY_HOME/etc 

注秒というコマンドはマルチユーザー環境にはお勧めできません。誰でもそのフォルダを読み書きすることができます。より良い解決策は、所有者をコンテナによって使用されるuid、ユーザーのgid、およびモード775に変更するか、ホストユーザーを同じ権限でコンテナ内のgidに追加することです。しかし、単一のユーザシステム上でuidとgidの複雑さに乗りたくない場合は、777がすばやい解決策です。


編集:MacOSのか、Windows上ドッカーを使用すると、また、ホストボリュームもドッカーLinuxのVMに、お使いのMac/Winのマシンから共有されているとしてフォルダを容器に装着されていることを確認する必要があります。 Docker for WindowsおよびDocker for Macには、共有ドライブまたはディレクトリを調整するための設定メニューがあります。 MacOSでは、ディレクトリ名の大文字と小文字に注意してください。

0

nfsマウントポイントをボリュームとして共有する場合、同じ問題が発生しました。これで解決しました:

docker-compose up --force-recreate 

希望の問題が解決します。

関連する問題