Docker でビルド コマンドと実行コマンドを組み合わせる

Marion Paul Kenneth Mendoza 2023年6月20日
  1. docker build および docker run コマンドの目的
  2. 二重アンパサンド演算子 (&&) を使用して Docker コマンドを組み合わせる
  3. コマンド置換を使用して Docker コマンドを組み合わせる
  4. まとめ
Docker でビルド コマンドと実行コマンドを組み合わせる

Dockerfile を使用してコンテナーの作成を自動化する場合、通常は docker build および run コマンドを使用します。 ただし、通常はほとんどのコマンドを 1 回の実行で組み合わせて、ローカル イメージ リポジトリを整理します。

この記事では、docker buildrun などのコマンドを 1 行で組み合わせる方法について説明します。

docker build および docker run コマンドの目的

docker build コマンドと docker run コマンドを一緒に使用すると、いくつかのシナリオで役立ちます。 たとえば、新しいアプリケーションを開発していて、すぐにテストしたい場合は、これらのコマンドを使用してビルドし、コンテナーで実行できます。

これにより、時間を節約でき、アプリケーションのテストが容易になります。

docker build コマンドは、Dockerfile の指示を読み取り、それを使用して Docker イメージを作成します。 Dockerfile を既にビルドしている場合は、docker run -it コマンドを使用してイメージを実行できます。

このコマンドは、イメージから新しいコンテナーを作成し、対話モードで実行します。

このモードは、コンテナと対話し、内部でコマンドを実行できることを意味します。 これらを個別に実行することもできますが、1 行で実行する方法がいくつかあります。

二重アンパサンド演算子 (&&) を使用して Docker コマンドを組み合わせる

docker builddocker run -it コマンドを組み合わせる 1つの方法は、 docker run コマンドで --rm フラグを使用することです。 このフラグは、コンテナーが自動的に終了するときにコンテナーを削除するように Docker に指示します。

このフラグは、次のように docker build コマンドと docker run コマンドを 1 行で実行できることを意味します。

docker build -t my-image . && docker run --rm -it my-image

この例では、my-image は、ビルドして実行する Docker イメージの名前です。 docker build コマンドの最後のピリオド (.) は、Dockerfile が現在のディレクトリにあることを示します。

このコマンドを実行すると、Docker は Dockerfile の指示に従ってイメージをビルドし、新しいコンテナーでイメージを実行します。 --rm フラグは、コンテナが終了するときにコンテナを自動的に削除することを保証します。

コマンド置換を使用して Docker コマンドを組み合わせる

2つのコマンドを組み合わせるもう 1つの例は、ドル記号 ($) 演算子を使用してそれらをネストすることです。 コマンドは次のようになります。

docker run --rm -it $(docker build -t my-image)

$(...) 構文はコマンド置換と呼ばれます。 Docker はコマンドの出力を別のコマンドの引数として使用するため、コマンド置換を使用します。

上記の場合、Docker は最初に docker build -t my-image コマンドを実行し、出力 (新しくビルドされた Docker イメージの ID) を docker run コマンドの引数として使用します。 置換を使用することで、Docker は docker run コマンドで、docker build コマンドによって返された ID を使用して Docker イメージを実行します。

さらに、アプリケーションを運用環境にデプロイする場合は、この方法を使用して Docker イメージを構築し、運用サーバーで実行できます。 これにより、アプリケーションが一貫した環境で実行され、管理と保守が容易になります。

まとめ

全体として、docker build および docker run コマンドは、Docker イメージを構築および実行するための強力なツールです。 これらのコマンドを組み合わせることで、わずか 1 行のコードで Docker イメージをビルドして実行できるようになり、アプリケーションの開発、テスト、デプロイがより簡単かつ迅速になります。

Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn