🐳
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