Docker for WindowsでPython3環境を簡単構築

2020/03/07

Docker for Windowsいいよ!と巷でうわさになっているので、実際に使ってみようと思い、ちょうどPythonの環境が欲しかったので早速導入してみました。

環境

  • Windows 10 Professional
    Hyper-Vの有効化が必要

※「Docker for Windows」は、仮想化基盤としてHyper-Vを使用するのでWindows 10 Homeでは使えません。 また、同じ理由でVirtualBoxと共存できないのでご注意を。VirtualBoxと共存したい場合は、「Docker Toolbox」を使いましょう。

前準備

Docker for Windowsのインストール

インストーラのダウンロード

URL

https://docs.docker.com/docker-for-windows/

上記サイトの「Install Docker for Windows」リンクからダウンロードページに行き、Docker for Windowsをダウンロードします。※ 現時点ではDocker Storeのアカウントが必要です。

インストール手順

インストーラを起動すると、以下のような画面が表示されます。

Docker for Windows インストーラ

Windows containers instead of linux containersは、LinuxコンテナではなくWindowsコンテナを使用するかのオプション。コンテナにWindowsを利用することはないのでデフォルトのままOffで進めます。

インストール状況が表示され、最後に成功した旨が表示されます。
※ 「Close and log out」ボタンを押すと、インストーラを閉じると同時にログアウトされますのでご注意を!

インストール完了

再ログインすると自動でDockerが立ち上がります。初回だけWelcomeページが表示されます。

dockerのwelcome画面

ログインを促されてますが、別にログインしなくても使えます。ログインしたらイイ事あるのかな?不明です。。

docker コマンドの確認

Windows PowerShellかコマンドプロンプトで確認します。

> docker version
Client: Docker Engine - Community
 Version:           18.09.0
 API version:       1.39
 Go version:        go1.10.4
 Git commit:        4d60db4
 Built:             Wed Nov  7 00:47:51 2018
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.0
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.4
  Git commit:       4d60db4
  Built:            Wed Nov  7 00:55:00 2018
  OS/Arch:          linux/amd64
  Experimental:     false

このように表示されればOKです。

ちなみにdocker-composeコマンドもデフォルトでインストールしてくれます。

> docker-compose --version
docker-compose version 1.23.2, build 1110ad01
Hyper-Vが有効じゃない場合

以下のようなエラーが表示されます。

Hyper-Vが無効

If you just enabled Hyper-V,please restart now.
→ Hypuer-V有効にしたばかりなら、再起動してね。

ちなみにVirtualBoxがインストールされたままだともっと怒られます。

VirtualBoxと共存不可

Hyper-V and Containers features are not enabled.
→ Hypuer-Vとコンテナ化は無効だよ!

Note: VirtualBox will no longer work.
→ VirtaulBoxとはいっしょに使えないよ!

Docker for Windowsを使う場合、素直にVirtualBoxはアンインストールしましょう。

Python3.7用のコンテナ作成

docker公式でPythonのコンテナが配布されているので、そちらを使います。
pythonのバージョンは、2019年1月時点で最新の「3.7」にします。
https://hub.docker.com/_/python/

docker pullでサクッとでもいいですが、どうせ複数コンテナを組み合わせることになるのでdocker-composeで構築していきます。

docker-compose.yml作成

まずは作業フォルダを作成し、docker-compose.ymlファイルを作成します。

作業フォルダ→ C:\develop\docker\python\
このフォルダにdocker-compose.ymlファイルを作成します。

docker-comopose.ymldocker-comopose.yml

version: '3'
services:
  python:
    image: python:3.7
    container_name: python_dev
    tty: true

コンテナ起動

早速起動してみます。

> cd C:\develop\docker\python\
> docker-compose up -d
Creating network "python_default" with the default driver
Pulling python (python:3.7)...
3.7: Pulling from library/python
cd8eada9c7bb: Pull complete
c2677faec825: Pull complete
fcce419a96b1: Pull complete
045b51e26e75: Pull complete
3b969ad6f147: Pull complete
2d18bcd81c37: Pull complete
8719ec5c24c9: Pull complete
6b29038f9369: Pull complete
239fef4b4f5c: Pull complete
Creating python_dev ... done

起動できました。
docker psで確認します。

> docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
944f8a15bfdd        python:3.7          "python3"           11 seconds ago      Up 10 seconds                           python_dev

docker execでコンテナに接続してみます。

> docker exec -it python_dev /bin/bash

コンテナ側のLinuxに入れました。debianですね。

root@944f8a15bfdd:/# cat /etc/debian_version
9.6

pythonでHello world!

最後に、pythonでお決まりのHello world.を出力してみます。

vimインストール

エディタも無いので、vimをインストールします。

# apt-get update
# apt-get install -y vim

Python実行

スクリプト作成します。

# vim hello.py

hello.py

print("Hello world!")

実行!

# python hello.py
Hello world!

OK!

まとめ

動作もサクサク動く感じでいいですね。
Docker自体の設定もGUIで設定できるし、まだ試してないですがKubernetesもここからインストールできるみたいです。