我想在docker容器中运行一个.exe。下面是源码的链接。
Git:https://github.com/jcreynolds/NodeLink集线器:https://hub.docker.com/r/jcreynolds/nodelink/
docker容器看起来是构建的,但是它不会运行。任何帮助都将不胜感激。
Edit#1:在unraid中使用
Edit#2:添加unraid docker日志
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 stateEdit#3:解决了!问题出在docker run命令中(不同之处在于-i),有人知道-i做什么吗?
有效的run命令:
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它试图使用的run命令:
docker run -d --name="NodeLink" --net="bridge" -e TZ="America/Chicago" -p 8090:8090/tcp -v "/mnt/user/Config/NodeLink":"/config":rw jcreynolds/nodelink编辑:添加有问题的代码:
docker文件代码:
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发布于 2016-07-15 00:38:40
您不能只在Docker容器中运行Windows可执行文件。我对在mono下运行它没有意见,但是如果你的startup.sh脚本真的能工作,它可能应该是你的容器的入口点。
RUN chmod -v +x /tmp/startup.sh
ENTRYPOINT /tmp/startup.sh对于某些解释-在Dockerfile中运行该命令将启动一个进程,该进程在该运行命令完成时立即结束。当Docker容器启动时,没有后台进程在运行--只有作为入口点的父进程。您正在尝试将windows可执行文件提供给Bash,但这将不起作用。相反,您可以启动一个shell,启动您的后台进程,并让该shell启动bash- bash shell就是父进程,它将使您的后台进程保持运行,直到您退出shell。
发布于 2016-07-15 01:30:44
您可以使用wine或Mono在Docker容器中运行Windows可执行文件,方法与在Linux下相同。
请参阅https://hub.docker.com/r/solarkennedy/wine-x11-novnc-docker/
作为一个很好的例子。
如果你的视窗可执行文件需要dotnet20或dotnet45,你需要在你的Dockerfile文件中执行winetricks dotnet20或类似的操作
发布于 2016-07-15 05:15:04
我的问题的解决方案在Edit#3中
https://stackoverflow.com/questions/38379435
复制相似问题