GNU/Linux >> Linux の 問題 >  >> Linux

Docker Alpine コンテナーでのシェルの開始

通常、Alpine Linux イメージには bash が含まれていません 、代わりに /bin/ash を使用できます 、 /bin/shash または 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


Linux
  1. Dockerコンテナのタイムゾーンを変更する方法

  2. Docker コンテナー内で実行されているプロセスの、ホストの PID は何ですか?

  3. exit を使用した後に docker alpine コンテナを保持するにはどうすればよいですか?

  1. 人々へのPower(Shell)

  2. Bashシェルのカスタマイズ

  3. コンテナー内で docker-compose コマンドからシェル スクリプトを実行します。

  1. $の意味は?シェルスクリプトでは?

  2. シェル:Dockerコンテナが存在するかどうかを確認しますか?

  3. Dockerの概要