首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >restcomm phusion file映像runsv无法启动./run: file不存在

restcomm phusion file映像runsv无法启动./run: file不存在
EN

Stack Overflow用户
提问于 2017-12-21 09:11:24
回答 1查看 1.4K关注 0票数 1

我在跟踪Restcomm码头快速启动指南。我试图在我安装了接口的“大型”VM (8GB mem和4 4vCPUs)上启动restcomm连接。我是一个公司的http代理,所以运行“码头-合成”是不够的。我创建了自己的restcomm/restcomm码头映像:我克隆了项目并做了一些更改:

我在Dockerfile和脚本/{restcomm_autoconf.sh,restcomm_sslconf.sh}中添加了https_proxy和https_proxy ENV指令,这样所有的wget都可以工作。

我在RCBCONF_STATIC_ADDRESS中的Restcomm/docker-come.yml中配置了VM ip地址。

在构建“自定义”停靠器映像时,在apt-get安装步骤中有一些错误消息:

代码语言:javascript
复制
docker build -t restcomm/restcomm:latest -f Dockerfile .
...
Setting up x11-common (1:7.7+13ubuntu3) ...
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
insserv: can not remove(../rc0.d/K01hwclock.sh): No such file or directory
insserv: can not remove(../rc0.d/K01sendsigs): No such file or directory
...

因此,我检查了您所依赖的原始码头映像(phusion/ those映像),并发现了这些奇怪的文件:

代码语言:javascript
复制
run -it phusion/baseimage bash
root@3485dcc8fe85:/# ls -l /etc/rc0.d/
ls: cannot access '/etc/rc0.d/K01hwclock.sh': No such file or directory
ls: cannot access '/etc/rc0.d/K01sendsigs': No such file or directory
ls: cannot access '/etc/rc0.d/K02umountnfs.sh': No such file or directory
ls: cannot access '/etc/rc0.d/K03umountfs': No such file or directory
ls: cannot access '/etc/rc0.d/K04umountroot': No such file or directory
ls: cannot access '/etc/rc0.d/K05halt': No such file or directory
total 4
??????????? ? ?    ?      ?            ? K01hwclock.sh
??????????? ? ?    ?      ?            ? K01sendsigs
lrwxrwxrwx. 1 root root  19 May 17  2017 K01syslog-ng -> ../init.d/syslog-ng
lrwxrwxrwx. 1 root root  17 May 10  2017 K01urandom -> ../init.d/urandom
lrwxrwxrwx. 1 root root  20 May 17  2017 K02hwclock.sh -> ../init.d/hwclock.sh
lrwxrwxrwx. 1 root root  18 May 17  2017 K02sendsigs -> ../init.d/sendsigs
??????????? ? ?    ?      ?            ? K02umountnfs.sh
??????????? ? ?    ?      ?            ? K03umountfs
lrwxrwxrwx. 1 root root  22 May 17  2017 K03umountnfs.sh -> ../init.d/umountnfs.sh
lrwxrwxrwx. 1 root root  18 May 17  2017 K04umountfs -> ../init.d/umountfs
??????????? ? ?    ?      ?            ? K04umountroot
??????????? ? ?    ?      ?            ? K05halt
lrwxrwxrwx. 1 root root  20 May 17  2017 K05umountroot -> ../init.d/umountroot
lrwxrwxrwx. 1 root root  14 May 17  2017 K06halt -> ../init.d/halt
-rw-r--r--. 1 root root 353 Jan 19  2016 README
root@3485dcc8fe85:/#

对不起,这可能是一个非常常见的问题,但在谷歌上没有发现任何明显的问题。

然后,当我运行docker-组合时,我有以下错误消息:

代码语言:javascript
复制
restcomm_1  | *** Running /etc/my_init.d/restcomm6.sh...
restcomm_1  | mv: cannot remove '/etc/service/cron/run': No such file or directory
restcomm_1  | mv: cannot remove '/etc/service/sshd/down': No such file or directory
restcomm_1  | mv: cannot remove '/etc/service/sshd/run': No such file or directory
restcomm_1  | mv: cannot remove '/etc/service/syslog-forwarder/run': No such file or directory
restcomm_1  | mv: cannot remove '/etc/service/syslog-ng/run': No such file or directory

然后循环中的下列错误消息:

代码语言:javascript
复制
restcomm_1  | *** Running /etc/rc.local...
restcomm_1  | *** Booting runit daemon...
restcomm_1  | *** Runit started as PID 281
restcomm_1  | runsv syslog-ng: fatal: unable to start ./run: file does not exist
restcomm_1  | runsv syslog-forwarder: fatal: unable to start ./run: file does not exist
restcomm_1  | runsv cron: fatal: unable to start ./run: file does not exist
restcomm_1  | runsv sshd: fatal: unable to start ./run: file does not exist

我认为这与我在建立码头形象时遇到的问题有关,但我不能百分之百肯定。

我在docker映像中的restcomm6.sh/script/restcomm6.sh s.sh中找到了以下行,添加为/etc/my_init.d/restcomm6.sh:

代码语言:javascript
复制
cp -pR /etc/service/* /etc/runit/runsvdir/current/

这可能是之前错误消息的来源。它应该只添加正确的脚本吗?

编辑1:我在restcomm/scripts/restcomm s.sh中注释掉了以下块:

代码语言:javascript
复制
#cd /etc/runit/runsvdir
#ln -s default /etc/runit/runsvdir/current
#cp -pR /etc/service/* /etc/runit/runsvdir/current/
#mv -f /etc/service /service.old && ln -s /etc/runit/runsvdir/current /etc/service

现在,restcomm服务启动了,但我感觉某些东西已经多次启动(可能是由于我的更改而导致的不适当的runit监视吗?):我可以在不同的线程中看到以下行和随后的日志块两次:

代码语言:javascript
复制
Initializing RVD. Project version: 1.13

然后以绑定异常结束:

代码语言:javascript
复制
restcomm_1  | 21:05:18,291 ERROR [org.mobicents.protocols.mgcp.stack.JainMgcpStackImpl] (RestComm-akka.actor.default-dispatcher-2) java.net.BindException: Address already in use
restcomm_1  | 21:05:18,293 ERROR [org.restcomm.connect.mrb.MediaResourceBrokerGeneric] (RestComm-akka.actor.default-dispatcher-4) Failed to find a local port 2727 to bound stack: java.lang.RuntimeException: Failed to find a local port 2727 to bound stack
restcomm_1  |   at org.mobicents.protocols.mgcp.stack.JainMgcpStackImpl.init(JainMgcpStackImpl.java:172) [mgcp-driver-6.0.23.jar:6.0.23]
restcomm_1  |   at org.mobicents.protocols.mgcp.stack.JainMgcpStackImpl.createProvider(JainMgcpStackImpl.java:250) [mgcp-driver-6.0.23.jar:6.0.23]
restcomm_1  |   at org.restcomm.connect.mrb.MediaResourceBrokerGeneric.bindMGCPStack(MediaResourceBrokerGeneric.java:134) [restcomm-connect.mrb-8.3.0-140.jar:8.3.0-140]
restcomm_1  |   at org.restcomm.connect.mrb.MediaResourceBrokerGeneric.onStartMediaResourceBroker(MediaResourceBrokerGeneric.java:120) [restcomm-connect.mrb-8.3.0-140.jar:8.3.0-140]
restcomm_1  |   at org.restcomm.connect.mrb.MediaResourceBrokerGeneric.onReceive(MediaResourceBrokerGeneric.java:99) [restcomm-connect.mrb-8.3.0-140.jar:8.3.0-140]
restcomm_1  |   at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:159) [akka-actor_2.10-2.1.2.jar:]
restcomm_1  |   at akka.actor.ActorCell.receiveMessage(ActorCell.scala:425) [akka-actor_2.10-2.1.2.jar:]
restcomm_1  |   at akka.actor.ActorCell.invoke(ActorCell.scala:386) [akka-actor_2.10-2.1.2.jar:]
restcomm_1  |   at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:230) [akka-actor_2.10-2.1.2.jar:]
restcomm_1  |   at akka.dispatch.Mailbox.run(Mailbox.scala:212) [akka-actor_2.10-2.1.2.jar:]
restcomm_1  |   at akka.dispatch.ForkJoinExecutorConfigurator$MailboxExecutionTask.exec(AbstractDispatcher.scala:506) [akka-actor_2.10-2.1.2.jar:]
restcomm_1  |   at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:262) [scala-library-2.10.1.jar:]
restcomm_1  |   at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:975) [scala-library-2.10.1.jar:]
restcomm_1  |   at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1478) [scala-library-2.10.1.jar:]
restcomm_1  |   at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104) [scala-library-2.10.1.jar:]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-05 17:34:05

我发现问题出在哪里。它与docker /var/lib/docker底层文件系统相关。我有一个没有d_type支持的xfs文件系统。我把一个新的卷附加到我的(openstack) VM上,用d_type参数格式化它,它工作了!实际上,如果没有这个选项,它就会破坏phusion/ image映像,然后间接地破坏依赖于此映像的restcomm映像。

以下是详细信息:

代码语言:javascript
复制
# docker info
...
Storage Driver: overlay
 Backing Filesystem: xfs
 Supports d_type: false
...
WARNING: overlay: the backing xfs filesystem is formatted without d_type support, which leads to incorrect behavior.
         Reformat the filesystem with ftype=1 to enable d_type support.
         Running without d_type support will not be supported in future releases.

我就是这样发现这个问题的。经xfs_info: ftype=0确认,应为1

代码语言:javascript
复制
[root@yohann telestax]# xfs_info /
meta-data=/dev/vda1              isize=256    agcount=10, agsize=524224 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=5240950, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@yohann telestax]#

在openstack上创建了一个新卷

将此卷附加到正在运行的实例。

(创建的设备是/dev/vdb)

使用"fdisk /dev/vdb“创建分区

命令: n,p,1和默认值

然后"w“来编写分区表。

使用正确的参数在此分区上创建xfs文件系统:

代码语言:javascript
复制
[root@yohann centos]# mkfs.xfs -n ftype=1 /dev/vdb1
meta-data=/dev/vdb1              isize=512    agcount=4, agsize=655296 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2621184, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@yohann centos]#

停止停靠后,挂载此文件系统:

代码语言:javascript
复制
rm -fr /var/lib/docker
mkdir /var/lib/docker
mount /dev/vdb1 /var/lib/docker/

然后,码头信息给出了正确的细节:

代码语言:javascript
复制
docker info
...
Storage Driver: overlay
 Backing Filesystem: xfs
 Supports d_type: true
...
(no more warning)

成功地尝试了基图:

代码语言:javascript
复制
[root@yohann centos]# docker run -it phusion/baseimage bash
Unable to find image 'phusion/baseimage:latest' locally
latest: Pulling from phusion/baseimage
22ecafbbcc4a: Pull complete
580435e0a086: Pull complete
8321ffd10031: Pull complete
08b8f28a13c2: Pull complete
2b401702069a: Pull complete
a3ed95caeb02: Pull complete
eae027dcdc0e: Pull complete
93bc98227159: Pull complete
Digest: sha256:d7507394a2e31759297a8726ac1f61e1c135b5255f8be42e7081d85b6fb3f903
Status: Downloaded newer image for phusion/baseimage:latest
root@4a3b26f2748e:/# ls -l /etc/rc0.d/
total 4
lrwxrwxrwx.  1 root root  19 May 17  2017 K01syslog-ng -> ../init.d/syslog-ng
lrwxrwxrwx.  1 root root  17 May 10  2017 K01urandom -> ../init.d/urandom
lrwxrwxrwx.  1 root root  20 May 17  2017 K02hwclock.sh -> ../init.d/hwclock.sh
lrwxrwxrwx.  1 root root  18 May 17  2017 K02sendsigs -> ../init.d/sendsigs
lrwxrwxrwx.  1 root root  22 May 17  2017 K03umountnfs.sh -> ../init.d/umountnfs.sh
lrwxrwxrwx.  1 root root  18 May 17  2017 K04umountfs -> ../init.d/umountfs
lrwxrwxrwx.  1 root root  20 May 17  2017 K05umountroot -> ../init.d/umountroot
lrwxrwxrwx.  1 root root  14 May 17  2017 K06halt -> ../init.d/halt
-rw-r--r--. 13 root root 353 Jan 19  2016 README
root@4a3b26f2748e:/# exit
[root@yohann centos]#

(不再有符号链接问题)

然后,我重建了restcomm码头形象,并再次运行它使用“码头-合成”。

我用https://myip:8443 administrator@company.com,密码: RestComm进行了测试。

而且起作用了!(这与http上的污染图像无关)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47921558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档