はじめに
GCPのCompute Engineインスタンス上にあるWindows servercoreのDockerイメージの中にPythonをインストールした時のメモ。
なお、作業の上でこちらを参考にしました。
https://medium.com/rkttu/creating-python-docker-image-for-windows-nano-server-151e1ab7188a
インスタンスへのログイン方法は様々な記事で記載されているので割愛します。
環境
- GCP Compute Engine
- Microsoft, Windows Server, 2019 Datacenter for Containers, x64 built on 20200310
作業内容
環境の確認
インスタンスへログインしたあと、IEでPythonをダウンロードするので、セキュリティ設定を一時的に変更しておきます。
PowerShellを管理者権限で起動して、dockerがインストールされているか確認します。
PS C:\Windows\system32> docker -v
Docker version 18.09.11, build 6112046bc9
OS上へPythonをインストール
https://www.python.org/downloads/windows/
ここから好きなインストーラーをダウンロードします。
ここでは「Python 3.7.7 - March 10, 2020」の「Windows x86-64 executable installer」を使用しています。
デフォルトのままインストールを完了すると、以下のようなディレクトリに実行ファイルなどが格納されています。
PS C:\Windows\system32> ls C:\Users\<ユーザ名>\AppData\Local\Programs\Python\Python37\
Directory: C:\Users\<ユーザ名>\AppData\Local\Programs\Python\Python37
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 4/14/2020 10:29 AM DLLs
d----- 4/14/2020 10:29 AM Doc
d----- 4/14/2020 10:29 AM include
d----- 4/14/2020 10:29 AM Lib
d----- 4/14/2020 10:29 AM libs
d----- 4/14/2020 10:29 AM Scripts
d----- 4/14/2020 10:29 AM tcl
d----- 4/14/2020 10:29 AM Tools
-a---- 3/10/2020 10:44 AM 30194 LICENSE.txt
-a---- 3/10/2020 10:44 AM 731115 NEWS.txt
-a---- 3/10/2020 10:42 AM 100368 python.exe
-a---- 3/10/2020 10:42 AM 58896 python3.dll
-a---- 3/10/2020 10:41 AM 3751440 python37.dll
-a---- 3/10/2020 10:42 AM 98832 pythonw.exe
-a---- 3/10/2020 9:39 AM 89752 vcruntime140.dll
PS C:\Windows\system32>
Dockerコンテナイメージへファイルをコピー
最初に使用するコンテナイメージを立ち上げておきます。
PS C:\Windows\system32> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mcr.microsoft.com/windows/servercore ltsc2019 80e84fd280e2 6 weeks ago 4.94GB
PS C:\Windows\system32> docker run -itd mcr.microsoft.com/windows/servercore:ltsc2019
c8e309e31f4bcd62dd0fa80196772a8dc90564fcd5da13c829c0cf68f826bd68
PS C:\Windows\system32> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c8e309e31f4b mcr.microsoft.com/windows/servercore:ltsc2019 "c:\\windows\\system32…" 11 seconds ago Up 4 seconds elated_khayyam
PS C:\Windows\system32>
dockerイメージにファイルをコピーします。
PS C:\Windows\system32> docker cp C:\Users\<ユーザ名>\AppData\Local\Programs\Python\. c8e309e31f4b:"C:\Program Files"
dockerイメージに入って、パスを通し、動作確認します。
PS C:\Windows\system32> docker attach c8e309e31f4b
Microsoft Windows [Version 10.0.17763.1098]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\>dir C:\"Program Files"\Python37\
Volume in drive C has no label.
Volume Serial Number is 7A0B-8FBB
Directory of C:\Program Files\Python37
04/14/2020 10:29 AM <DIR> .
04/14/2020 10:29 AM <DIR> ..
04/14/2020 10:29 AM <DIR> DLLs
04/14/2020 10:29 AM <DIR> Doc
04/14/2020 10:29 AM <DIR> include
04/14/2020 10:29 AM <DIR> Lib
04/14/2020 10:29 AM <DIR> libs
03/10/2020 10:44 AM 30,194 LICENSE.txt
03/10/2020 10:44 AM 731,115 NEWS.txt
03/10/2020 10:42 AM 100,368 python.exe
03/10/2020 10:42 AM 58,896 python3.dll
03/10/2020 10:41 AM 3,751,440 python37.dll
03/10/2020 10:42 AM 98,832 pythonw.exe
04/14/2020 10:29 AM <DIR> Scripts
04/14/2020 10:29 AM <DIR> tcl
04/14/2020 10:29 AM <DIR> Tools
03/10/2020 09:39 AM 89,752 vcruntime140.dll
7 File(s) 4,860,597 bytes
10 Dir(s) 20,977,143,808 bytes free
C:\>set PATH=%PATH%;C:\"Program Files"\Python37\
C:\>python
Python 3.7.7 (tags/v3.7.7:d7c567b08f, Mar 10 2020, 10:41:24) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
C:\>
無事にpythonが起動することを確認できました。
DockerFileに記載する場合
こちらは個人的なメモですが、参考にしたURLなどでも記載されているような記述をすればいけそうです(未検証)。
https://medium.com/rkttu/creating-python-docker-image-for-windows-nano-server-151e1ab7188a
error during connectのエラーが出た場合
dockerを使おうとしたときに、下のようなエラーが出た時がありました。
PS C:\Windows\system32> docker ps
error during connect: In the default daemon configuration on Windows, the docker client must be run with elevated privileges to connect.: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.39/containers/json: open //./pipe/docker_engine: The system cannot find the file specified.
dockerを再起動したら、直りました。
PS C:\Windows\system32> Restart-Service Docker
PS C:\Windows\system32> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
PS C:\Windows\system32>
まとめ
Windows servercoreコンテナイメージ上にPythonをインストールしたときのメモでした。
良いへの方法をご存知でしたら是非教えてください!