2017-01-21 2 views
-1

私はDockerを初めて使用しており、postgresql & metasploitがプリインストールされている既存のkalilinuxドッカー画像を実行しようとしています。Dockerファイルからドッカー画像を実行するにはどうすればよいですか?

私Dockerfileは現在、次のようになります。

FROM kalilinux/kali-linux-docker:latest 

RUN apt-get -y update && echo 'y' | apt-get install postgresql --fix-missing 
RUN echo 'y' | apt-get install metasploit-framework 

これがうまく構築し、私はそれを実行すると、しかし、それは私のカーリー・イメージから与えられたコマンドを実行した後、停止します。私はこれらのコマンドを実行してもらいたいし、次にインストールpostgreとMetasploitのと私のマシン上で開くkalilinuxなければならず、このような何か:

FROM kalilinux/kali-linux-docker:latest 

RUN apt-get -y update && echo 'y' | apt-get install postgresql --fix-missing 
RUN echo 'y' | apt-get install metasploit-framework 
# Pseudo code below 
CMD docker run kalilinux/kali-linux-docker 

ここでは、するために、私が最初に続くKalis公式サイトから元のブログ記事でありますkaliを設定するlinux:Kali Linux On Docker

ありがとう。

+0

私はこれが最初の[タグだと思いますlinux]という質問はほとんど話題になっていません。おめでとう。 – Will

答えて

2

docker runとimageの場合は、DockerfileにCMD(またはENTRYPOINT)が指定されていると実行されます。

docker build -t myimage . 

そしてを:あなたが実行した場合、代わりにそれと

CMD ["/bin/bash"] 

:あなたは、あなたのイメージは、常に対話型シェルになりたい場合は、このようなあなたのDockerfileで何かが必要になります画像を作成したら、次のコマンドを実行してください:

docker run -it myimage 

最後に、対話シェルを使用します。それはあなたが欲しいものですか?もちろんpostgresqlで、を実行しません。あなたはそれをインストールしましたが、に始まるコマンドを発行していません。もう1つの方法は、デフォルトでイメージのポストグルを開始させてから、docker execを使用して、実行中にコンテナ内の対話型シェルを取得することです。

これに近づく他の方法もありますが、実際には何をしようとしているかによって大きく異なります。

+0

ありがとう、postgresqlが実行されていないことを知っています。私が望むなら、DockerfileでCMDを実行するようにします。私のために、**は単にrunコマンドに-it引数を追加するように見えます。 –

+0

'-i'と' -t'フラグについて、[この回答](http://stackoverflow.com/a/41732542/147356)が参考になるかもしれません。 – larsks

0

あなたはそれを実行し、post_install.shスクリプトを作成dockerfileのフォルダに入れて、あなたのドッキングウィンドウのインスタンスでそれをコピーすることができます:kali-:

ADD post_install.sh/
WORKDIR/
CMD ["/post_install.sh"] 
+0

巧妙なアイデア、これを念頭に置いておきます –

関連する問題