仕事で利用している開発環境では、、、
docker-compose exec -it <container> bash
なんだけど、自分が個人開発で使っているものは、
docker-compose exec -it <contaienr> ash
でした。
bashで使っている環境のコマンドはashにするとエラーになるし、もう一方も同じ。
これってどんな違いがあるのかな?と思い調べてみました。
TL;DR
dockerコンテナ内部でシェルを使う時の参照元の違い
詳細
言わずもがなではありますが、シェルはOS(Linux)を操作するCUIのことです。
開発を行うにあたってはdockerコンテナに入ってから色々コマンドを打つわけですが、そのコマンドを打つためにbash
を参照しています。
bash
の中には「pwd
というコマンドが送られてきたら現在のパスを表示する」みたいなコマンドが登録されていて、シェルが実行できるワケですね。
ただ、同じLinuxでもディストリービューションによってシェルの置き場所がbash
ではない場合があります。
それを確認できるのが下記のコマンド。
echo $SHELL
// /bin/bash or /bin/ash
bash
でコンテナに入れるdockerコンテナ内で打った時は/bin/bash
、
ash
で入れる場合は/bin/ash
になります。
いわゆる「パスを通す」みたいなコトをdocker-compose
でもやっています。
LinuxやDockerのキホンを知らなかったコトをさらけ出しただけのような気もしますが、スッキリしました!
参考資料
下記記事が分かりやすく、とても助かりました!