この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
docker にログインできない問題
docker で環境を構築してログインしようとしたときにエラーが出て、偶にコンテナにログインできない事があるので、エラーの対処法を備忘録として残します。
ログインできない原因
エラーの原文
1 |
OCI runtime exec failed: exec failed: unable to start container process: exec: "bash": executable file not found in $PATH: unknown |
実際の実行履歴
1 2 3 4 5 6 7 8 9 |
PS C:\Users\hoge> docker start docker-test docker-test PS C:\Users\hoge> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3eaed017a19e docker101test "/docker-entrypoint.…" 2 hours ago Up 14 seconds 0.0.0.0:80->80/tcp docker-test PS C:\Users\hoge> docker exec -it 3eaed017a19e bash OCI runtime exec failed: exec failed: unable to start container process: exec: "bash": executable file not found in $PATH: unknown |
エラーの理由は英語で記載された通り、bash コマンドが $PATH に設定されていない、または bash 自体がコンテナにインストールされていない事が原因です。
解決策
対処する方法は主に2つ。
方法1:問答無用で docker にログインするなら「bash」の代わりに「sh」コマンドを使用する。
bash が無ければ別のコマンドを利用してログインすれば良いという考え方。
ただ bash は sh の機能強化版という立ち位置にあるため、コマンドで作業する時に手間がかかる可能性があります。そのため sh でログイン後に bash をインストールして一旦ログアウト。再度 bash でログインし直すという手もあります。
ちなみに sh でログインした後に bash を追加するコマンドは、
apk add bash
です。
方法2:Dockerfile に「bash」のインストールを記述してコンテナを作り直す
もう一つは、bash 入りのコンテナを作り直せばよいという考え方。
Dockerfile に
RUN apk add bash
を追記して、コンテナを作り直せばOKです。
どちらで対応するかは状況に合わせて使い分けてください。