Docker の --rm フラグ
一般に、ほとんどの開発者が docker を使い始めると、イメージのプル、イメージのビルド、およびコンテナーの実行のすべてのプロセスを経てコンテナーを削除すると、本来の目的が失われます。 ただし、経験豊富な開発者にとって、これには、アプリケーションの開発とそれらを可能な限り効率的にするのに役立つ利点があります。
このチュートリアルでは、docker での rm
コマンドの使用について説明します。 さらに、このコマンドを使用する利点についても学習します。
Nginx イメージをプルする
このチュートリアルでは、Nginx イメージ を使用します。 Docker Hub の任意のイメージを使用することもできます。
したがって、新しいターミナル (キーボード ショートカット Ctrl+Alt+T) を開き、以下のコマンドを使用して画像を取得します。
~$ docker pull nginx:alpine
出力:
alpine: Pulling from library/nginx
ca7dd9ec2225: Already exists
76a48b0f5898: Pull complete
2f12a0e7c01d: Pull complete
1a7b9b9bbef6: Pull complete
b704883c57af: Pull complete
4342b1ab302e: Pull complete
Digest: sha256:455c39afebd4d98ef26dd70284aa86e6810b0485af5f4f222b19b89758cabf1e
Status: Downloaded newer image for nginx:alpine
docker.io/library/nginx:alpine
イメージからコンテナーを実行する
イメージがダウンロードされたら、次のコマンドを使用して temp-container
という名前のコンテナーを実行します。
~$ docker run --rm --name temp-container -w /com/app/ nginx:alpine pwd
出力:
/com/app
docker run
コマンドでは、--rm
フラグを使用しました。これは、終了時にコンテナーを自動的に削除します。 -w
フラグを使用して、コンテナ内の作業ディレクトリを設定しました。
さらに、コンテナの作業ディレクトリは、pwd
コマンドを使用して出力されました。 通常、このコマンドはコンテナを実行し、コンテナの作業ディレクトリを設定し、作業ディレクトリを出力した後に --rm
フラグでコンテナを削除します。
このコンテナーを実行する主な目的は、作業ディレクトリが正常に設定されているかどうかをテストすることであるため、ホストにコンテナーを配置する必要がないため、コンテナーを削除します。
これは --rm
フラグの使用例の 1つです。 このコマンドを使用する利点は、未使用のコンテナーによって使用されるコンピューターの記憶域を節約できることです。
このコマンドが削除されたことを確認するには、次のコマンドを使用してコンテナーが存在するかどうかを確認します。
~$ docker ps -a
出力:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
コンテナー内に他の実行中のコンテナーがある場合は、上記のコマンドを使用してすべてが一覧表示されます。 ただし、他のコンテナがない場合、コンソールには何も表示されません。
最後に、--rm
フラグを使用するもう 1つの利点は、クリーンアップと概念実証を自動的に実行できることです。
まとめ
このコマンドは、有効期間が短いコンテナー、特にテスト目的で使用されるコンテナーに対してのみ使用してください。 結論として、この記事では、--rm
フラグの使用方法と、このコマンドを使用してコンテナーを実行する理由について説明しました。
最後に、このコマンドを使用することで得られる利点をいくつか学びました。
David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.
LinkedIn GitHub