通常、Alpine Linux イメージには bash
が含まれていません 、代わりに /bin/ash
を使用できます 、 /bin/sh
、 ash
または sh
のみ .
/ビン/灰
docker run -it --rm alpine /bin/ash
/bin/sh
docker run -it --rm alpine /bin/sh
灰
docker run -it --rm alpine ash
シ
docker run -it --rm alpine sh
この情報がお役に立てば幸いです。
[email protected]:~$ docker run -it --rm alpine /bin/ash
(inside container) / #
上記で使用したオプション:
/bin/ash
BusyBox が提供する Ash (Almquist Shell) です--rm
終了時にコンテナーを自動的に削除します (docker run --help
)-i
対話モード (アタッチされていなくても STDIN を開いたままにする)-t
疑似 TTY を割り当てる
現在、Alpine イメージは /bin/sh
で直接起動します。 デフォルトでは、実行するシェルを指定する必要はありません:
$ sudo docker run -it --rm alpine
/ # echo $0
/bin/sh
これは alpine
以降です image Dockerfile に CMD
が含まれるようになりました コンテナの起動時に実行するシェルを指定するコマンド:CMD ["/bin/sh"]
.
古い Alpine イメージ バージョン (2017 年より前) では、CMD コマンドは使用されませんでした。これは、Docker が CMD 用の追加レイヤーを作成していたため、イメージ サイズが大きくなっていたためです。これは、Alpine の画像開発者が避けたかったことです。最近の Docker バージョン (1.10 以降) では、CMD がレイヤーを占有しなくなったため、alpine
に追加されました。 画像。したがって、CMD がオーバーライドされない限り、最近の Alpine イメージは /bin/sh
で起動します。 .
参考までに、Glider Labs による公式の Alpine Dockerfiles への次のコミットを参照してください。
https://github.com/gliderlabs/docker-alpine/commit/ddc19dd95ceb3584ced58be0b8d7e9169d04c7a3#diff-db3dfdee92c17cf53a96578d4900cb5b