web-dev-qa-db-ja.com

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

ついに、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はDockerfilehttps://github.com/NodeBB/NodeBB/blob/master/Dockerfile を提供しています。リモートでこのDockerfileを呼び出すことで、何らかの方法でローカル環境を作成できると想定しています。

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

39

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

これは、docker run -d nodebbでコンテナを起動できるnodebbという名前のローカルマシン上のイメージを提供します

51

Dockerfileからコンテナーを開始することはできません。

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

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

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

[1]:docker import tarballからの画像、またはdocker loadを使用することもできます。

26
Auzias

上記の答えは役に立ちましたが、これは本当に助けになったので、ここにも掲載しています。

ドキュメント から:

コンテキストを指定する代わりに、単一のDockerfileをURLで渡すか、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のタグを付けます

8
Pavel Janicek