exec形式とshell形式の違い【Docker】

違いについて調べたら、あるサイトに

shell形式: コマンド 引数1 引数2..
Dockerデフォルトのシェル/bin/shでコマンド実行。つまり、/bin/sh -c “コマンド 引数1 引数2..”として実行される。

exec形式: [“コマンド”, “引数1”, “引数2”..]
コマンド直接(シェルを通さず)実行。コマンドや引数を囲むときシングルクォート’は使えない。

引用:https://docker.open-code.club/shell%E5%BD%A2%E5%BC%8F%E3%81%A8exec%E5%BD%A2%E5%BC%8F%E3%81%AE%E9%81%95%E3%81%84.html

みたいに書かれていた。

 

shell形式の方はわかったんだけど

exec形式の「コマンド直接(シェルを通さず)実行。」の意味が分からなかった。

 

え?直接実行ってどゆこと?シェルを通さずにコマンドって実行できるものなの?

って思ったんだけど、たぶんこれは

  • shell形式:
    →新しくシェルを立ち上げてそのシェルの中で実行する
  • exec形式:
    →新しくシェルを立ち上げてそのシェルの中でexecコマンドの引数として実行する
    (なので実行後はシェルのPIDがそのまま実行したコマンドのPIDとなる)

みたいな意味なんだろう。たぶん。

それしかないよね・・・?

 

もしかすると

  • exec形式:Dockerデーモンがカーネルに直接「このコマンド実行してよ」みたいに命令できる

みたいな意味なのかもだけど、

まぁDockerはexec形式を推奨しているらしいので、exec形式使っとけば良いよねって話なので、深くは考えないことにする。。

 

おわり

仮想環境
スポンサーリンク
この記事を書いた人
penpen

1991生まれ。
2019年くらいからフロントエンドエンジニアを目指している元アフィリエイターです💩

職を探しています😭
よろしくお願いします🙇

penpenをフォローする
penpenをフォローする
penpenメモ

コメント

タイトルとURLをコピーしました