2016-07-14 145 views
0

我想在Docker容器中运行.exe文件。以下是源代码的链接。如何获取Docker镜像以运行可执行文件

混帐:https://github.com/jcreynolds/NodeLink 枢纽:https://hub.docker.com/r/jcreynolds/nodelink/

泊坞窗容器但出现建它不会运行。任何帮助,将不胜感激。

编辑#1:这是用在unraid

编辑#2:添加unraid泊坞窗日志

Jul 14 12:50:41 BennySRV php: /usr/local/emhttp/plugins/dynamix.docker.manager/scripts/docker 'start' 'NodeLink' 
Jul 14 12:50:41 BennySRV kernel: device veth8fb01c8 entered promiscuous mode 
Jul 14 12:50:41 BennySRV kernel: docker0: port 10(veth8fb01c8) entered forwarding state 
Jul 14 12:50:41 BennySRV kernel: docker0: port 10(veth8fb01c8) entered forwarding state 
Jul 14 12:50:41 BennySRV avahi-daemon[2619]: Withdrawing workstation service for veth958915c. 
Jul 14 12:50:41 BennySRV kernel: docker0: port 10(veth8fb01c8) entered disabled state 
Jul 14 12:50:41 BennySRV kernel: eth0: renamed from veth958915c 
Jul 14 12:50:41 BennySRV kernel: docker0: port 10(veth8fb01c8) entered forwarding state 
Jul 14 12:50:41 BennySRV kernel: docker0: port 10(veth8fb01c8) entered forwarding state 
Jul 14 12:50:41 BennySRV kernel: veth958915c: renamed from eth0 
Jul 14 12:50:41 BennySRV kernel: docker0: port 10(veth8fb01c8) entered disabled state 
Jul 14 12:50:41 BennySRV kernel: docker0: port 10(veth8fb01c8) entered disabled state 
Jul 14 12:50:41 BennySRV avahi-daemon[2619]: Withdrawing workstation service for veth958915c. 
Jul 14 12:50:41 BennySRV avahi-daemon[2619]: Withdrawing workstation service for veth8fb01c8. 
Jul 14 12:50:41 BennySRV kernel: device veth8fb01c8 left promiscuous mode 
Jul 14 12:50:41 BennySRV kernel: docker0: port 10(veth8fb01c8) entered disabled state 

编辑#3:解决了!问题出在码头运行命令 (不同之处在于-i)有没有人知道我在做什么?

运行命令的工作原理:

docker run --name=NodeLink --net="bridge" -i -e TZ="America/Chicago" -v "/mnt/user/Config/NodeLink":"/config":rw -p 8090:8090/tcp -d jcreynolds/nodelink 

运行命令,它试图用:

docker run -d --name="NodeLink" --net="bridge" -e TZ="America/Chicago" -p 8090:8090/tcp -v "/mnt/user/Config/NodeLink":"/config":rw jcreynolds/nodelink 

编辑:

泊坞窗文件代码:问题添加的代码:

FROM ubuntu:latest 

#... 

# Adding Custom files 
################## 
COPY startup.sh /tmp/startup.sh 
RUN chmod -v +x /tmp/startup.sh && sleep 1 && /tmp/startup.sh && rm /tmp/startup.sh 
CMD ["/NodeLink/NodeLink.exe"] 

startup.sh文件:

#!/bin/bash 
if [ ! -e "/NodeLink/NodeLink.exe" ]; then 
cd /NodeLink 
wget http://automationshack.com/Files/NodeLink.exe 
fi 
mono /NodeLink/NodeLink.exe & 
/bin/bash 
+0

有没有发出任何错误/警告当你尝试容器?任何有助于提供线索的原因是为什么它不能按预期运行? – Castaglia

+1

docker文件使用CMD或ENTRYPOINT来指定要运行的服务。为什么你另外运行一个startup.sh之前?你的exe文件也是一个服务,或者是执行某些东西然后终止的东西? – TehSphinX

+0

@TechSpinX额外的RUN是我最后一次努力的结果。我是创建码头应用程序的新手。 .exe是一个运行web gui的服务,默认情况下它的端口是8090. – jcreynodls

回答

0

您不能在Docker容器中运行Windows可执行文件。我没有意见在单声道下运行它,但如果你的startup.sh脚本实际工作,它可能应该是你的容器的入口点。

RUN chmod -v +x /tmp/startup.sh 
ENTRYPOINT /tmp/startup.sh 

对于一些解释 - 在Dockerfile中运行命令会启动一个当RUN命令完成时立即结束的进程。当Docker容器启动时没有后台进程正在运行 - 只是父进程是入口点。您正试图向Bash提供一个Windows可执行文件,这将不起作用。相反,启动一个shell,启动你的后台进程,并让这个shell启动bash-- bash shell然后是父进程,并且它会让你的后台进程一直运行,直到你退出shell。

+0

我按照这些指令手动构建了docker镜像和容器:http://forum.universal-devices.com/topic/19214-nodelink -docker /。它似乎工作正常。 – jcreynodls

+0

那么当你修改Dockerfile时你想完成什么?因为你不熟悉我提到的入口点和这个连接的CMD一样(在这种情况下)。 –

0

我的问题的解决方法是编辑#在3

相关问题