このための良い理由があります:それはあると解釈されています2つのコマンド。
docker exec mydocker sh -c 'echo "hello" >> /usr/local/src/scores.txt'
しかし、なぜそれが起こっている:単一のシェルコマンドであなたのコンテナのコマンドをラップ - stacksonstacksが掲載され
ソリューションはありますか?
キーは、あなたがbash演算子を使用したことです。
echo one two >> file.txt
「>>」演算子は、エコーの引数として渡された(「1」のようにして「2」を行う)を取得しません:あなたは何かを実行する任意の時間に似ています。代わりに、echoコマンドを実行し、出力をファイルに追加します。
この場合、 ">>"演算子はドッカーのexecに同じ処理を行い、結果を/usr/local/src/scores.txtに出力しようとしていて、ディレクトリが存在しないことを報告しますコンテナではなくホスト)。
docker exec mydocker echo "hello" >> scores.txt
あなたは「hello」を含む、ホスト上scores.txtを見つけるだろう - コンテナ上で実行するコマンドの出力を:
これは、あなたが実行した場合ことを意味します。 そして最終テスト試みとして:
docker exec cf65263ed353 hostname && hostname
あなたはそれがあなた自身に続いてコンテナのホスト名(そのハッシュID)を、印刷し表示されます。 2番目のコマンドはホスト上で実行されます。
このようなことをせずに他のコマンドを実行できることは面白いです。ありがとう – ahajib
これには良い理由があります:それは2つのコマンドとして解釈されています。 – Nauraushaun