2016-08-18 74 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 

希望能够解决您的问题!

相关问题