我试图设置我的docker容器,其中主机机器目录已安装到容器中以便将日志写入。我的dockerfile非常简单:
FROM golang:1.9.2
WORKDIR /
COPY daemon /
CMD ["./daemon", "-d", "debug"]
其中daemon
是Go程序的编译二进制文件。我通过以下命令启动容器:
docker run -d --restart unless-stopped -v /var/log/scope/:/var/log/scope/ slack_daemon
其中slack_daemon
是上面的dockerfile内置的图像名称。
但是,容器中的目录/var/log/scope
未写入主机。我在主机上的该目录中放置的任何内容都在容器内可见,但是写入现有文件或在容器中的该目录中创建新文件都没有写入主机。 Docker或任何命令都没有抛出任何错误,它只是不能将任何内容写入主机目录。
在OSX 10.12.6上运行Docker 17.09.0-ce-mac35,稳定通道。
我尝试的事情:
docker run
命令作为sudo
运行。--privileged
标记添加到docker run
。chmod 777
上的/var/log/scope
。我特别需要主机和容器中的该目录,因为我们的代码和日志处理程序都期望该位置,并且对于当前问题来说,改变它的位置太大了。
对此的任何指导将不胜感激。我能找到的大多数在线资源表明这是一个SELinux问题,但我没有得到“#34;许可被拒绝”#34;错误,这是OSX,而不是linux。
我还检查了/var
dir本身。它别名为/private/var
:
lrwxr-xr-x@ 1 root wheel 11 Oct 30 10:54:11 2017 var -> private/var
默认情况下,/private
是docker中文件共享设置中的共享目录。