2016-08-18 44 views
1

我試圖使用開始在MacOS docker.bintray.io/jfrog/artifactory-oss:4.11.1Docker version 1.9.1, build a34a1d5爲什麼搬運工容器不能在安裝文件夾中創建的文件夾

他們的指導建議的地圖數據和配置文件夾託管,使他們持續這是公平的建議:https://www.jfrog.com/confluence/display/RTF/Running+with+Docker#RunningwithDocker-RunningArtifactoryasaDockerPrivateRegistry

問題是容器無法啓動。它抱怨從已安裝的卷不能創建artifactory的特定文件夾和文件的文件中已安裝的卷

/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 

我泊塢窗命令看起來像:

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 

當我設置安裝的捲到/ tmp

export ARTIFACTORY_HOME=/tmp/local.artifactory

碼頭集裝箱啓動,但我的坐騎出現在碼頭機VM上,我可以訪問它們......

+0

等一下,'rm -rf $ ARTIFACTORY_HOME'? –

回答

1

當您裝載一個當前不存在的主機卷時,該文件夾將被創建並以root權限(使用默認umask,即755)進行裝載。修復方法是在清理步驟後創建數據,日誌等...文件夾,並使用可寫入容器的權限配置它們。

在這裏你看到的問題的一個例子:

$ 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,你還需要確保該文件夾被安裝到容器作爲主機體積也從Mac /運機共享到泊塢窗的Linux VM。 Docker for Windows和Docker for Mac是用於調整共享驅動器或目錄的設置菜單。在MacOS上,請注意目錄名稱的情況。

0

當將nfs掛接點共享爲一個卷時,我遇到了同樣的問題。這解決了它:

docker-compose up --force-recreate 

希望能夠解決您的問題!

相關問題