🐳

Dockerfileなしでコンテナを試すワンライナー

2021/07/02に公開

もともとはDockerhubのPythonイメージに書いてあった内容ですが、大変便利だと思ったので紹介します。数式とかちょっとしたプログラムをサッと試したい…けどDockerfile作るほどではないなあって時に使えますね!

結論

カレントディレクトリにあるmain.pyを実行します。Dockerfileは不要です。

$ docker run --rm -v `pwd`:/app -w /app python:3-slim python main.py

使用するイメージ(python:3-slim)や、コマンド(python main.py)を変えれば他の言語にも対応できます。

なにができるか

main.py
print(1+1)
$ docker run --rm -v `pwd`:/app -w /app python:3-slim python main.py
Unable to find image 'python:3-slim' locally
3-slim: Pulling from library/python
:
:
Status: Downloaded newer image for python:3-slim
2

最終行にちゃんと計算結果が出ていますね!
実行後は使用したコンテナは消えています。

$ docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

イメージは残るので二回目以降はビルドが走らずにすぐに実行できます。

$ docker run --rm -v `pwd`:/app -w /app python:3-slim python main.py # 二回目
2

解説

$ docker run --rm -v `pwd`:/app -w /app python:3-slim python main.py
  • --rm: コマンド実行が終了したタイミング(main.pyを実行したら)コンテナを削除
    • 使用したイメージは削除されない
  • -v `pwd`:/app: カレントディレクトリをコンテナ内の/appにマウント
    • カレントディレクトリをコンテナ内で使用できるようにする
    • `pwd`$(pwd)でも"$(pwd)"でも"$PWD"でもOK
  • -w /app: コンテナ内の作業ディレクトリの指定 (WORKDIRと同じ)
  • python:3-slim: 使用するイメージの指定
    • 軽量のDebianにPython3.9.6がインストールされたイメージ
  • python main.py: コンテナ内で叩くコマンド
GitHubで編集を提案

Discussion