2016-07-14 152 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

相關問題