DockerFileからdockerインスタンスを実行するにはどうすればよいですか?


94

ようやくdockerを起動して実行する方法を見つけました。

docker run --name my-forum-nodebb --link my-forum-redis:redis -p 80:80 -p 443:443 -p 4567:4567 -P -t -i nodebb/docker:ubuntu

私はそれをredisインスタンスにリンクしました。

これは最初からであり、redisインスタンスを作成したときに

docker run --name my-forum-redis -d -p 6379:6379 nodebb/docker:ubuntu-redis

リモートリポジトリから画像を取得しますか?

NodeBBはDockerfile https://github.com/NodeBB/NodeBB/blob/master/Dockerfileを提供しています。私はそれをどのように使用するか本当にわかりません。私は、リモートでこのDockerfileを呼び出すことによって、どういうわけかローカル環境を作成できると想定しています。

これは正しいです?もしそうなら、リモートを指すローカルインスタンスをどのように作成できますか?


ローカル環境でDockerイメージを構築してローカルでプルすることができます
BMW

$ cat Dockerfile | docker build -t <image_name>-#ハイフンを気にする
jbobbylopez

回答:


95

ファイルをダウンロードし、同じディレクトリから実行します docker build -t nodebb .

これにより、ローカルマシン上に、コンテナーを起動できるnodebbという名前のイメージが提供されますdocker run -d nodebbnodebbを自分の名前に変更できます)。


1
これはどのように作動しますか?私が単にdockerfileを持っているだけなら、それは私のプロジェクトについてどのようにしてわかりますか?dockerfileにリンクはありますか?次に、新しいイメージをパッケージ化するdockerハンドルがあるかどうかを仮定します。これは、サーバーに移行できます。このパッケージでは、プロジェクトのすべての資産を吸収しますか?無知に聞こえたら申し訳ありませんが、Dockerは新しい概念ですが、学習を楽しんでいます。
Michael Joseph Aubry

2
ちなみに、あなたの例で<>は何を表していますか?なぜ<nodebb>を選んだのですか?
Michael Joseph Aubry

Dockerコンテナは「あなたの」プロジェクトについて知りません。それらは非常に一般的です。
Andreas Wederbrand 2016年

3
指定したコマンドが機能しなかったため、 `docker build .`を試してみましたが、名前が付いていないため、実行できません。docker build -t <nodebb> .くれfile exists: .ます。に付属する既存のプロジェクトがあるDockerfileので、そのディレクトリ内で実行しました。
Michael Joseph Aubry


45

Dockerfileからコンテナを起動することはできません。

プロセスは次のようになります。

Dockerfile = [ docker build] => Dockerイメージ= [ docker run] => Dockerコンテナ

コンテナーを開始(または実行)するには、イメージが必要です。イメージを作成するには、Dockerfile [1]をビルドする必要があります。

[1]:docker importtarballからの画像や、再度の画像も使用できますdocker load


26

上記の回答は役に立ちましたが、これは本当に役に立ちましたので、ここでも説明します。

ドキュメントから:

コンテキストを指定する代わりに、URLで単一のDockerfileを渡すか、STDINを介してファイルをパイプすることができます。STDINからDockerfileをパイプするには:

$ docker build - < Dockerfile

WindowsのPowershellでは、次のコマンドを実行できます。

Get-Content Dockerfile | docker build -

ビルドが完了したら、コマンドを実行します。

docker image ls

次のようなものが表示されます。

REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
<none>                     <none>              123456789        39 seconds ago      422MB

実際のIMAGE IDをコピーして実行します

docker run 123456789

最後の数字は、前のステップの実際の画像IDです。

画像IDを覚えたくない場合は、次の方法で画像にタグを付けることができます。

docker tag 123456789 pavel/pavel-build

画像に次のタグを付けます pavel/pavel-build


驚くべきことに、2020年に最初のスニペットを見つけるのに非常に時間がかかりました。
fullStackChris

これはより多くの儀式で受け入れられた答えです。
ミハイル

18

簡単で簡単なソリューションは次のとおりです。

docker build .
=> ....
=> Successfully built a3e628814c67
docker run -p 3000:3000 a3e628814c67

3000 -どのポートでもかまいません

a3e628814c68 -成功ビルドコマンドによって与えられたハッシュ結果

Dockerfileを含むディレクトリ内にいる必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.