2016-07-26 11 views
2

私は通常、ドッカーイメージ上でbashシェルを開きたいと思っています。このためのマルチコマンドプロセスは次のようになります:docker pidをbashコマンドにパイプすることはできません

$ docker ps 
CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS    NAMES 
bba983d72d48  scubbo/datenight "apachectl -DFOREGROU" 7 days ago   Up 7 days   0.0.0.0:80->80/tcp pensive_bell 
$ docker exec -it bba983d72d48 bash 

私はこれをショートカットしたいと思います。しかし、私は次のエラーを取得する:

$ docker ps | awk 'NR > 1 {print $1}' | xargs -I {} docker exec -it {} bash 
cannot enable tty mode on non tty input 

少しグーグルから、私はthis issueを見つけた - 私は-tオプションをドロップする場合は、コマンドはすぐに「完了します」。

私は、docker exec -it {} bashの適切な位置に$ docker ps | awk 'NR > 1 {print $1}'の出力を手動でコピーして貼り付けが成功したことを確認しました。

EDIT:パイプからdocker psを切り出し、以下も失敗:

$ docker ps 
CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS    NAMES 
4f20409c37b7  scubbo/datenight "apachectl -DFOREGROU" 8 days ago   Up 8 days   0.0.0.0:80->80/tcp drunk_northcutt 
$ docker ps -q 
4f20409c37b7 
$ echo '4f20409c37b7' | xargs -I {} docker exec -it {} bash 
cannot enable tty mode on non tty input 

答えて

1

私はあなた」、しかし私の命令Iの巣が、警告の

docker exec -it $(docker ps | awk 'NR > 1 {print $1}') bash 

言葉をこれを行う傾向があります複数のコンテナが実行されているとエラーが発生します。

1

あなたが立ち上げただけで一つの容器を持っている場合は、最後の打ち上げコンテナ

を入力したい場合は、実行中のコンテナ

のIDのみdocker ps -q出力は、ちょうど

docker exec -it $(docker ps -q) bash

を行うことに注意してください

docker exec -it $(docker ps -lq) bash

あなたの名前をあなたの名前ontainerあなたはそれ

docker run --name nostalgic...

を起動したとき、あなたは

https://docs.docker.com/engine/reference/commandline/ps/

+0

おかげで、それはコマンドのきちんとしたセットのドキュメントをチェック

docker exec -it $(docker ps -q --filter "name=nostalgic") bash

でそれをフィルタリングすることができます!私はまだIDを 'xargs docker exec'にパイプすることができないのかどうかは分かりません。 – scubbo

関連する問題