2017-06-15 159 views
1

在我的開發中,我發現自己發出一個docker run命令,然後對所產生的容器ID進行相當頻繁的docker exec命令。有一點煩人的是必須在命令之間複製/粘貼容器ID,所以我試圖將容器ID輸入到我的docker exec命令中。管道碼頭運行容器ID到碼頭執行

這是我的示例命令。

docker run -itd image | xargs -i docker exec -it {} bash

這將啓動容器,但後來我碰到下面的錯誤。

the input device is not a TTY 

有沒有人有任何想法如何解決這個問題?

編輯:我也忘了提及我有一個ENTRYPOINT定義,不能覆蓋。

+0

-it **和** d ?. –

+0

@OliverCharlesworth兩全其美! – jvhashe

回答

1

而是執行此操作:

ID=$(docker run -itd image) && docker exec -it $ID bash 

因爲xargs執行它的參數未分配新的tty。

+0

謝謝!這工作完美。 – jvhashe

+0

不客氣! – Robert

0

如果您只是想將「bash」放入容器中,則不必傳遞容器id。你可以簡單地運行

docker run -it --rm <image> /bin/bash 

例如,如果我們把Ubuntu的基本圖像

docker run -it --rm ubuntu /bin/bash 
[email protected]:/# 

documentation

-t:分配僞終端
-i:即使未連接,也要保持STDIN打開
--rm:當容器退出時自動移除容器

命令/ bin/bash overwrites由Dockerfile中的CMD指令指定的默認命令。

+0

謝謝,我忘了提及我已經有一個ENTRYPOINT定義,不能被覆蓋。 – jvhashe

相關問題