PodmanやDockerで、コンテナの名前が重複した場合は削除してから docker run する

Docker

はじめに

小ネタです。暖かく見守ってください。

コンテナの名前が被りがち

何かしらコンテナを検証するとき、docker rundocker stopdocker rmを繰り返すことがよくあります。例えばAnsibleを使っていて、Managedノードをコンテナで作成して検証するときなどです。コンテナ名はtestとか適当につけるので、もしtestという名前のコンテナを消し忘れていると、以下のように怒られます。

怒られて当然です。確認しない自分も悪いんです。でも何度も何度も怒られてるうちに、悲しい気持ちになってきます。

対策方法

作りたいコンテナの名前を決めている場合、その名前のコンテナがすでに存在したときに、docker stopdocker rm行うには、以下のワンライナーを実行すれば良いです。1

私は検証対象となるコンテナを起動するときのdocker runのオプションも決まっている場合が多いので、以下のようなショボいスクリプトを書いて対策しました。もっといい方法があれば教えてください。

当然dockerの部分をpodmanとしても動きます。Podmanに関しては、以下をご参考に。

CentOS 8で、Dockerの代替らしい Podman を少し使ってみる
NishipyRHEL 8では、コンテナランタイムとして、Docker ではなく Podman がサポートされるらしいので、使ってみました。はじめにこの記事を書いた後に、以下の翻訳記事を書きました。元記事がたいへん素晴らし...(続く)

以上.


  1. このStackOverflowの回答参照のこと。 

コメント