我有以下Dockerfile:
FROM jboss/wildfly
USER jboss
RUN mkdir -p /opt/jboss/wildfly/standalone/log
VOLUME /opt/jboss/wildfly/standalone/log
CMD /bin/bash
# CMD true
此结果图像以docker run -ti --name=data_volume data/volume
开头。下一个Dockerfile
FROM jboss/wildfly
RUN sed -i 's|<file relative-to="jboss.server.log.dir"
path="server.log"/>|\<file relative-to="jboss.server.log.dir"
path="\${jboss.host.name}-server.log"/\>|'
/opt/jboss/wildfly/standalone/configuration/standalone.xml
覆盖生成的jboss的日志记录,以记录日志目录中的&#34; servername&#34; -server.log。当我用docker run -ti --name=wild-01 --volumes-from=data_volume my/wildfly
和docker run -ti --name=wild-02 --volumes-from=data_volume my/wildfly
启动生成的图像时,我的data_colume容器中有两个日志文件。太好了。
我想将我的卷指向主机上的目录,例如。的/ var /日志/ wildfly。
如何在Dockerfiles中实现此功能,而不是在运行data/volume
时使用-v参数
提前多多感谢
答案 0 :(得分:1)
在dockerfiles内部,您只能在/var/lib/docker/volumes
中定义卷。这是因为每个主机可能与另一个主机不同。
Docker使用/var/lib/docker
作为&#34;泊坞区&#34;它存储所有与docker相关的数据。它是每个主机上保证的目录,因为它是在安装时创建的。
如果要在dockerfile中指出一个卷,让我们对/home/mbieren/docker_vol
说,在不同的主机上执行时,该图像会导致多个错误,因为该目录不存在且用户可能没有足够的权限来创建它。
Docker解决了这个问题,不允许在dockerfile中设置自定义挂载路径。
答案 1 :(得分:0)
我想将我的卷指向主机上的目录,例如。的/ var /日志/ wildfly。
从Dockerfile中删除所有卷的提示...使用
启动容器docker run -d -v /var/log/wildfly:/var/log/wildfly your-image-name
然后在你的代码中引用正常路径
/var/log/wildfly
使用docker run -ti
启动容器的语法使容器shell具有交互性,而-d
是将其作为后台运行的守护程序进行旋转的正常模式