2015-12-09 107 views
2

我有一個與主機共享卷的docker容器。卷安裝在根主文件夾中。在該文件夾中,我有一個shell腳本,我想在容器啓動並運行後運行。在共享捲上運行docker上的shell腳本

我使用這個命令:

docker exec -i localserver_web_1 sh /root/scripts/define_applications.sh 

,但我得到這樣的響應:當我從容器內運行它

sh: 0: Can't open /root/scripts/define_applications.sh 

腳本工作正常。它說它在/ root/scripts /中。我的權限設置爲777.我可能做錯了什麼?

+0

原來這是一個pebkac錯誤,但@VonC的答案幫助我診斷問題,並可能有助於其他人。 –

回答

2

只是可以肯定,嘗試和exec以root身份,與TTY,在命令shell:

docker exec -it -u root localserver_web_1 sh -c '/root/scripts/define_applications.sh' 

如果它不工作,檢查至少它的存在和內容通過docker exec

docker exec -it -u root localserver_web_1 sh -c 'ls -alrt /root/scripts' 
docker exec -it -u root localserver_web_1 sh -c 'cat /root/scripts/define_applications.sh' 

另外檢查圖像以檢查其ENTRYPOINT(類似於to the check for its CMD):

docker inspect --format='{{.Config.Entrypoint}}' <image:tag> 

OP Jon Schwartz確認in the comments

這是一個pebkac錯誤。
腳本實際上被稱爲define-applications.sh,而不是define_applications.sh
cat行顯示我的問題。當它可以通過ls看到腳本時,我知道它應該能夠達到它。當它不能cat了,我意識到發生了什麼。

+1

非常感謝你幫我解決了我的問題......不幸的是,這是一個pebkac錯誤。該腳本實際上稱爲define-applications.sh而不是define_applications.sh貓行向我展示了我的問題。當它可以通過ls看到腳本時,我知道它應該能夠達到它。當它無法脫身時,我意識到發生了什麼事。哎呀。謝謝! –

+0

@JonSchwartz太棒了!我已將您的結論納入答案中,以獲得更多的知名度。 – VonC