我有一个Dockerfile如下
FROM rajenata/ovs
MAINTAINER Rajesh Nataraja <...>
COPY initovs /sbin/
ENTRYPOINT ["/sbin/initovs"]
CMD ["--help"
然后我执行
docker run -d rajenata/ovs:2 --net=host --privileged -v /etc/openvswitch:/etc/openvswitch
但是initovs脚本
#!/bin/bash
if [ -d "/etc/openvswitch" ]; then
if [ -f "/etc/openvswitch/conf.db" ]; then
echo "DB Exists No Need to Create"
else
ovsdb-tool create /etc/openvswitch/conf.db /usr/local/share/openvswitch/vswitch.ovsschema
fi
else
echo "Open V Switch not mounted from Host"
exit -1
fi
返回exit -1
,表示挂载不可用。
ENTRYPOINT
是否有可能在DOCKER
完成装载之前执行?
答案 0 :(得分:-1)
我猜你是和普通用户一起运行的。您可能无法访问/ etc / openvswitch(即使用户是docker组的一部分)。理想情况下,在ENTRYPOINT
之前可以使用挂载。即使您创建一个仅回显“hello world”的脚本并将其挂载到容器中的某个位置并在入口点上运行它,它也会打印“hello world”。所以,对我而言,似乎是许可问题。您可以登录容器并查看该文件是否存在。
$ docker run -it rajenata/ovs:2 --net=host --privileged -v /etc/openvswitch:/etc/openvswitch /bin/bash
container-name# ls /etc/openvswitch
如果您尝试执行与在入口点中执行的操作相同的操作,请尝试查看您获得的错误。