dockerでpip installした構成を永続化したい

dockerのコンテナの中で、pythonまたはjupyter notebookを動かしている場合、コンテナの中で pip install して作った環境を使いまわしたいことがあります。

コンテナは一時的なものですから、コンテナが削除されると pip installして作った環境は消えます。

$ docker run <とあるイメージ> -it /bash/sh
$$ pip install numpy  # dockerの中でインストール
$ docker stop <ID>
$ docker rm <ID>
$ docker run <とあるイメージ> -it /bash/sh
$$ pip list
... numpy は存在しない

コンテナ内で作った環境を使いまわしたいときは、そのコンテナをコミットして、イメージにしておくと良いです。で、新しく作ったイメージからコンテナを立ち上げると、インストール済みの環境でリスタートできます。

$ docker run <とあるイメージ> -it /bash/sh
$$ pip install numpy  # dockerの中でインストール
$ docker stop <ID>
$ docker commit <コンテナの名前> <新しいイメージの名前>
$ docker run <新しいイメージ> -it /bash/sh
$$ pip list
... numpy がインストール済み!