はじめに
部署内で使っていたアプリがPythonスクリプトだった(=Python環境がないと動かない)ので、Pyinstallerでexe化することにした。
が、Anaconda環境だったためエラー出まくり、できたファイルは500MBオーバーということに。
【悲報】PyInstallerさん、300MBのexeファイルを吐き出すようになる
↑で紹介されている事象を一通り経験したので、クリーンなWindows環境を求めて、Docker DesktopでWindows環境を立てることにした。
前提
- ホストOS:Windows10
- Docker Version:v20.10.6
Docker Desktopをインストールする
Docker DesktopからインストールすればOK。
参考:
【入門】はじめての Docker Desktop for Windows のインストールと CentOS の仮想環境構築のセットアップ
Windows Containerへの切り替え
インストールしたままでDockerイメージを作成しようとすると、Linux環境が構築されることになるので、モードの切り替えが必要。
タスクトレイのDocker Desktopアイコンを右クリックし、Windowsモードに切り替える。
Dockerイメージを取得する
Pythonイメージを取得
Pythonのイメージを入れて起動するだけで、空のWinsows環境にPyhtonが入った状態で起動できる。
コマンドプロンプトで以下のコマンドを入力すればOK。
> docker pull python
Windowsコンテナを起動
Pullしたイメージを選択
Docker Desktopの「Images」を開き、取得したPythonイメージを選択し、「Run」を選択する。
コンテナ名、ボリュームを設定
設定ダイアログで、コンテナ名とボリュームの結び付けを行う。(Portの設定は不要)
Host PathにホストOSの利用したいフォルダのパスを設定すると、Container Pathに設定したフォルダを開いたときにHost Pathの内容が見られるようになる。
コンテナ上で既存ファイルを操作したい場合は必ず設定しておく。
コンテナを起動
設定ダイアログでRunを押すと、Pythonが入った状態のWindowsコンテナが起動する。
pipをインストールしておく
そのままだとPythonの最小限のパッケージしか入っていない状態。パッケージが必要になる都度pipでインストールしていくことになるので、pipをインストールしておく。
参考:
pipの使い方とインストール
Windowsイメージの取得・起動も可能
以下のイメージを取得すると、Windowsイメージの起動ができる。
何も入っていない(=諸々インストールが大変)のにサイズが14GBもあるが…
> docker pull mcr.microsoft.com/windows:2004
Tagの指定
Dockerイメージを取得する際にTagの指定をしない(「:2004」をつけない)と、latestを取りに行って取得できないので注意。
> docker pull mcr.microsoft.com/windows
Using default tag: latest
Error response from daemon: manifest for mcr.microsoft.com/windows:latest not found: manifest unknown: manifest tagged by "latest" is not found