web-dev-qa-db-ja.com

Dockerfile:ビルドして実行する

Dockerfileを構築するための1つのコマンドdocker buildと、コマンドを実行するためのdocker run -itがあるので、1つのコマンドだけでDockerfileを構築して実行することは可能ですか。

1つのコマンドでビルドおよび実行を簡単にするために、これら2つのコマンドを組み合わせて使用​​することはできますか?

64
Twinkle

いいえ、単一のコマンドはありません。あなたがそれを構築するときあなたがあなたの画像にタグを付けるなら、それは実行するのがより簡単になるでしょう:

docker build -t foo . && docker run -it foo
76

タグ付けを避けたい場合、docker build -qは最終的なイメージハッシュ以外は何も出力しません。これをdocker runの引数として使用できます。

docker run -it $(docker build -q .)

また、終了時にコンテナーを自動的に削除したい場合は、--rmdocker runに追加します。

docker run --rm -it $(docker build -q .)
98
starthal

もしあなたがMakefileを使っているなら、私はこのスニペットが役に立つと思います:

build:
    @docker build . | tee .buildlog

bash: build
    @docker run --rm -it $(Shell grep "Successfully built" .buildlog | cut -d ' ' -f 3) /bin/bash

@ jonathon-reinhartの回答のようにタグ付けする必要はありませんが、ビルド出力も得られます。

2
tavlima

Windows PC

run.batファイルを作ります。それからファイルにこれを追加します。

docker build -t foo . 
docker run -it foo

Powershellまたはcmdを使用してファイルを実行するには、次のようにします。

./run.bat
0
Rob