🐳
Dockerfileなしでコンテナを試すワンライナー
もともとは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: コンテナ内で叩くコマンド
Discussion