Docker for WindowsでPython3環境を簡単構築
Docker for Windowsいいよ!と巷でうわさになっているので、実際に使ってみようと思い、ちょうどPythonの環境が欲しかったので早速導入してみました。
環境
- Windows 10 Professional
Hyper-Vの有効化が必要
※「Docker for Windows」は、仮想化基盤としてHyper-Vを使用するのでWindows 10 Homeでは使えません。 また、同じ理由でVirtualBoxと共存できないのでご注意を。VirtualBoxと共存したい場合は、「Docker Toolbox」を使いましょう。
前準備
- Hyper-Vの有効化
こちらの手順を参考にHyper-Vを有効にしておきます。
https://docs.microsoft.com/ja-jp/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v
Docker for Windowsのインストール
インストーラのダウンロード
URL
https://docs.docker.com/docker-for-windows/
上記サイトの「Install Docker for Windows」リンクからダウンロードページに行き、Docker for Windowsをダウンロードします。※ 現時点ではDocker Storeのアカウントが必要です。
インストール手順
インストーラを起動すると、以下のような画面が表示されます。
Windows containers instead of linux containersは、LinuxコンテナではなくWindowsコンテナを使用するかのオプション。コンテナにWindowsを利用することはないのでデフォルトのままOffで進めます。
インストール状況が表示され、最後に成功した旨が表示されます。
※ 「Close and log out」ボタンを押すと、インストーラを閉じると同時にログアウトされますのでご注意を!
再ログインすると自動で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が有効じゃない場合
以下のようなエラーが表示されます。
If you just enabled Hyper-V,please restart now.
→ Hypuer-V有効にしたばかりなら、再起動してね。
ちなみに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.yml → docker-compose.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もここからインストールできるみたいです。
ディスカッション
コメント一覧
今更ですがこのサイトを見ながらpythonが使えるイメージを作成させていただきました(というよりdockerの練習)
docker-compose.yml作成のところでファイル名がdocker-com”o”pose.ymlになっています。
コピペしたら(←) ”docker-compose up ”で失敗してなぜ、、、と嵌まってしまいました。
とはいえ有用な情報を残していただきありがとうございます。
おかげで助かりました。
うぁぁ、タイポのご指摘ありがとうございます。
記事修正させていただきました!
ありがとうございました~
打消し線で修正した後もdocker-comoposeになってますよ(笑)
本当ですね。。
度々のご指摘ありがとうございました!
(今度こそ治ってるはず)