2017-03-03 9 views
0

今日私はDockerについて学びたいと思っていますが、まだ明確ではないアイデアがいくつかあります。 作成したばかりのイメージを実行しようとしましたが、ここにディレクトリがあります。Dockerコンテナを最初から起動できません

ハロー(ディレクトリ):

  • Dockerfile
  • start.sh

そしてDockerfile:

FROM scratch 
ADD start.sh /var/ 
CMD ["/var/start.sh"] 

start.sh:

#!/bin/bash 
echo "hello world" 

私は以下のようにタグ付けしました: ドッカーのビルド-t mozer/hello。

一度コマンドを実行します。

docker run mozer/hello 

no such file or directory 
Error response from daemon: Cannot start container f22019aabc81f29fe17e849a2c040902ccadefe6cb8a8fe2612c83fe8eda40ea: [8] System error: no such file or directory 

と私はコマンドを実行すると:

docker run mozer/hello /bin/sh -c 
exec: "/bin/sh": stat /bin/sh: no such file or directory 
Error response from daemon: Cannot start container 3b54584092e70b639671aca66122a0b1f6b1e4327cb2471a8792c3b2337b0bcc: [8] System error: exec: "/bin/sh": stat /bin/sh: no such file or directory 

あなたは解決策を見つけるために私にいくつかのアイデアをお願いできますか?

P.S.私はインターネットに接続されていないマシンで作業しています!

答えて

1

FROM scratchは完全に空のファイルシステムです。インストールされたライブラリはなく、そこには(/ bin/shのような)シェルも含まれていません。これをベースにするには、静的にリンクされたバイナリが必要です。あるいは、Linuxディストリビューションに含まれている通常のツールをすべてインストールする必要があります。

後者は、ドッカーハブ上のさまざまなビジーボックス、debian、ubuntu、centosなどのイメージにあらかじめパッケージ化されているものです。最小限のベースイメージで画像を素早く処理するには、FROM busyboxに変更し、/bin/bash/bin/shに変更してください。

1

スクラッチイメージは空のファイルシステムで、内部に/ bin/shはありません。あなたは、建物のコンテナの開始 点として、スクラッチをドッカーの予約された、最小限のイメージを使用することができますCreating a simple base image using scratch

ルック。スクラッチ「イメージ」信号を使用して にDockerファイルの次のコマンドを にしたいビルドプロセスをイメージの最初のファイルシステムレイヤにします。

実行可能なコンパイル済みプログラムを追加して実行することができます。

関連する問題