2016-05-26 7 views
1

私はnetcatを使って簡単なWebサーバーを実行するためのドッカーイメージを作成しようとしています。シンプルなbashスクリプトを実行するためのドッカーファイルの作成方法を教えてください。

だから私は私のドッキングウィンドウのビルドフォルダにあります。

Dockerfile 
index.html 
run_netcat_webserver.sh 

run_netcat_webserver.shは、非常に簡単であり、それが正常に動作します:ここで

#!/bin/bash 

while true ; do nc -l 8080 < index.html ; done 

はもちろんのことDockerfile私の素朴で機能していません。

FROM ubuntu:14.04 

CMD run_netcat_webserver.sh 

この作業をドッキング用コンテナ内で行うにはどうすればよいですか?

答えて

2

スクリプトをコンテナの一部にする必要があります。これを行うには、DockerファイルのCOPYコマンドを使用してスクリプトを内部でコピーする必要があります。この

FROM ubuntu:14.04 
COPY run_netcat_webserver.sh /some/path/run_netcat_webserver.sh 
CMD /some/path/run_netcat_webserver.sh 

/some/pathようコンテナ内のお好みのパスです。コンテナ内のユーザーを気にする必要がないので、ちょうど/でもかまいません。

別のオプションは、マウントされたボリュームを介してスクリプトを外部に提供することです。例:あなたは、コンテナを実行したときに

FROM ubuntu:14.04 
VOLUME /scripts 
CMD /scripts/run_netcat_webserver.sh 

はその後、あなたは/scriptsとしてマウントされますどのようなディレクトリを指定します。そして、あなたは(ホスト)ディレクトリ/tmpは、コンテナの/scriptsディレクトリの下にマウントされることを引き起こす

docker run --volume=/tmp:/scripts (rest of the command options and arguments) 

このような容器を実行する、のは、スクリプトが/tmpであると仮定しましょう。

+0

どのような '/ some/path'を使用するのですか?私は '/ usr/local/bin'を試してみましたが、うまくいきませんでした:( – TakeSoUp

+0

@TakeSoUpこれはコンテナ内のパスで、基本的に' '/' 'コンテナ。それはすべて分離されているので、なぜそうではない... – zegkljan

+0

ありがとう!私のスクリプトをホームディレクトリ(つまり '〜')にコピーすることは可能ですか? – TakeSoUp

1

簡単な例

  1. Ubuntuの中から "Dockerfile"

を書く:14.04 - あなたは

ENTRYPOINT [ "/ binに/エコー"]コンテナを構築するために使用している#の画像 - コンテナの起動時に実行されるコマンド#

  1. y ouは "Dockerfile"と同じディレクトリにあります。

  2. sudo docker build。

、あなたが

サンプル出力で行われています。

ahanjura @ Ubuntuの:〜$ viのDockerfile

ahanjura @ Ubuntuの:〜$ sudoのドッキングウィンドウのビルドを。UbuntuのFROM::14.04 ---> 67759a80360c ステップ2:ENTRYPOINT/binに/ エコー---> c0e5f48f7d45 での実行---> 7a96b36f528e ドッカーデーモン1.39ギガバイト ステップ1にコンテキストを構築送信

中間コンテナを取り除くc0e5f48f7d45 7a96b36f528eを作成しました

関連する問題