2015-12-11 54 views
1

碼頭工人,容器內的工作目錄,我能得到使用以下命令無法更改使用python腳本

os.system('docker exec -ti $(docker ps -q -a --filter "name=XXXXX") /bin/bash') 

泊塢窗容器內,然後我需要改變,以在容器中的以下目錄。

/u01/oracle/weblogic/***** 

當我使用os.chdir("/u01/oracle/weblogic/*****"),我收到No such Directory error

我可以看到,os.getcwd()仍在打印python腳本運行的上一個目錄,而不是docker目錄。

有人能讓我知道我失蹤了嗎?

+1

當你後彼此同時運行的命令,你會改變你的主機在劇本上,而不是容器 –

+0

內的工作目錄那麼,如何讓容器文件夾結構是內像這樣的'/ u01/oracle/weblogic' – Hemanth

+0

使用'subprocess'模塊而不是'os.system()'並且使用你想要使用的命令。但是總的來說:你不應該從外部執行自動化任務碼頭集裝箱,這打破了碼頭的概念。 –

回答

3

爲什麼不使用容器名稱作爲exec參數,而不是使用查詢來獲取id?

您可以使用bash的-c參數執行多個命令。像:

os.system('docker exec -ti XXXXX /bin/bash -c "cd /tmp;ls -alrt"') 
+0

這太神奇了! -c國旗爲我做了魔術。感謝羅伯特:) 在我的情況下,碼頭容器的名稱和ID是不一致的。只有一致的部分是IMAGE。但我無法根據圖像進行過濾。 IMAGE會是這樣的 'systemname.com:xxxx/xxx/xxxx:latest' – Hemanth

+0

必須看到這個線程解決了我的其他問題:) http://stackoverflow.com/questions/29406871/how -to-過濾搬運工 - 處理 - 基於圖像上 – Hemanth