1

ユーザー ガイドには、イメージを次のように実行する必要があると記載されています。

docker run -t -i ubuntu /bin/bash

これ-tで疑似端末が作成-iされ、インタラクティブになります。でもその/bin/bash部分は不要のようです。を使用しても使用しなくても/bin/bash、どちらからでも読み書きできるインタラクティブなプロンプトが表示されます。

root@77eeb1f4ac2a:/# 

なぜ必要なの/bin/bashですか?

パート2

Docker for Mac で実行しています。hello-worldバイナリをダウンロードして実行すると、 1kb. 明らかに、Linux イメージは一緒にダウンロードされませんでした。小さなhello-worldバイナリは私の Mac カーネルから実行されていますか、それとも Docker for Mac に付属する小さな Linux カーネルから実行されていますか?

4

2 に答える 2

2

パート1:

後に渡すものはすべてdocker run -t -i ubuntu、コンテナーが実行する最初のコマンドです。/bin/bash、/bin/sh、または実際に使用してみることができますecho hello。Ubuntu はデフォルトで bash を使用しますが、他のコンテナーは Dockerfile に基づいて他のコマンドを使用します。

パート2:

hello-world を実行すると、hello-image から Docker コンテナーが作成されます。コンテナーには、「アプリケーションとそのすべての依存関係が含まれますが、カーネルは他のコンテナーと共有され、ホスト オペレーティング システムのユーザー空間で分離されたプロセスとして実行されます。」.

特に Hello-world はゼロから作成されます https://hub.docker.com/_/scratch/

于 2016-09-09T01:01:45.280 に答える
2

なぜ /bin/bash が必要なのですか?

ubuntuイメージはデフォルトで実行するように構成されている可能性がありますが、/bin/bashすべてのイメージに当てはまるわけではないためです。デフォルトで Web サーバーを起動するイメージがあり、それを実行したい場合は、bashそれを明示する必要があります。一部のイメージではデフォルト コマンドが指定されていないため、次のようになります。

$ docker run -it alpine
docker: Error response from daemon: No command specified.

コンテナを起動するとき、特に自分で構築していないイメージを使用するときは、明示的であることは決して悪いことではありません。

hello-world バイナリをダウンロードして実行すると...

どの hello-world バイナリ?

しかし、LinuxのVMがそれを実行していますか、それとも私のMacが実行していますか?

Docker は Linux でのみ動作します。OS X または Windows で Docker を使用している場合、(以前は)によってその目的のために生成された Linux VMでコンテナーを実行しています。WindowsではDockerはHyper Vを使用し、OS Xでは以前はVirtualBoxを使用していましたが、最近のバージョンでは何か他のものを使用している可能性があります(OS XでDockerを実行してからしばらく経ちました)。docker-machineboot2docker

于 2016-09-09T01:01:54.807 に答える