Dockerを使おう
みなさんDockerを使っていますか?
環境をさくっと用意できるのは便利ですよね!
今回はWindowsにDockerをインストールする手順を解説します。
ついでにPython環境のコンテナを起動してみたいと思います。
他にも私のブログで、Dockerについて解説している記事がありますのでご覧ください。
MacにDockerをインストールする手順は、以下の記事をご覧ください。
Docker Desktopの有料化
2021年9月、Docker Desktopは、条件を満たした利用について有料になりました。
個人はこれまで通り無料で利用できますが、企業での利用は注意ですね。
(翻訳) Docker Desktop は、Docker Personal サブスクリプションの一部として、個人、非営利のオープン ソース開発者、学生および教育者、および従業員が 250 人未満で収益が 1,000 万ドル未満の中小企業向けに無料で使用できます。
https://www.docker.com/pricing/

WSL2のインストール
Docker Desktopをインストールする前に、WindowsにWSL2をインストールしましょう。
以下の記事にまとめていますので、ご覧ください。
ダウンロード
Windows用のDockerデスクトップをインストールします。
今回はWindows 11 Proを使用しておりますが、他のEditionでも同じだと思います。
以下のページより、Docker Desktop for Windowsをダウンロードします。
Install Docker Desktop on Windows

「Docker Desktop for Windows」をクリックし、インストーラをダウンロードします。
インストール
ダウンロードしたインストーラを起動します。

ちなみに以前のインストーラはこんな感じでした。
可愛いクジラちゃん、Moby Dockって名前らしいですよっ

2つのチェックボックスがありますが、「Use WSL 2 instead of Hyper-V (recommended)」のチェックを入れ、次へ進みます。

インストールが開始されます。

インストールが完了しました。
「Close and restart」ボタンをクリックし、再起動します。

再起動後、Dockerを起動すると規約画面が表示されます。
確認し、問題なければ「Accept」ボタンをクリックします。

もし、WSL2または、Hyper-Vが有効になっていない場合、エラーになります。
事前にWSL2のインストールを行いましょう。

An error occurred
Required Windows feature(s) not enabled: Hyper-V.
Switch to WSL 2 based engine?
To enable Hyper-V: https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v
Docker Desktop起動
Dockerが正常に起動すると以下のようなアンケート画面が表示されました。
ここではSkipします。

必要に応じてチュートリアルを見ましょう。

ちなみにチュートリアルはこのような感じで、Clone、Build、Run、Shareなど、Dockerの基本的な流れを実行することができます。

PowerShellを起動し、「docker ps」と打ちます。
以下のような表示になれば、まずは正常に動作しています。
PS C:\Users\xxx> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
設定
Dockerの設定を開きます。
「Start Docker Desktop when you log in」のチェックを外しました。
PC起動時に、Dockerは起動しないようにしました。

リソースの設定はWSL2では設定できませんでした。

Resources
Advanced
You are using the WSL 2 backend, so resource limits are managed by Windows.
You can configure limits on the memory, CPU, and swap size allocated to WSL 2 in a .wslconfig file.
Dockerイメージのダウンロードと起動
これでDockerの準備ができました。
コンテナが一つもありませんので、試しに表示されているコンテナを起動してみましょう。

以下のコマンドをPowerShellから実行します。
docker run -d -p 80:80 docker/getting-started
ブラウザを起動して、以下のURLを開きます。
http://localhost/
Getting Started画面が表示されました。
これはコンテナ上のサーバーのページにアクセスしていることになります。

Docker Desktopを見てみましょう。作成したコンテナが一覧に表示されます。

次に、Pythonイメージをダウンロードしてみましょう。
PowerShellから以下のようにコマンドを実行します。(Python3.6環境)
docker pull python:3.6

「docker images」でイメージがダウンロードされたか確認します。
PS C:\Users\xxx> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
python 3.6 2bb3204ab1d1 8 days ago 924MB
コンテナを起動します。
「pytest」は名前ですので任意で指定してください。
docker run -it --name pytest python:3.6 /bin/bash
rootでログインしているような状態になります。

このコンテナには何も入っていないので、とりあえずエディタを入れました。
# apt-get update
# apt-get install -y vim
「vi test.py」とコマンドを打ち、test.pyファイルを作成します。
中身はprintで文字を出すようにしました。
print("test")
「python test.py」と入力し、Pythonが実行されることを確認します。

たったこれだけでPython環境が作れました!
フォルダの共有
コンテナ側とWindows側で、フォルダを共有できます。
それによりソースコードやログファイルなどの共有ができ便利です。
今度はDockerコマンドで、「-v ホストパス:コンテナ内パス」を追加します。
それぞれのパスは任意で結構です。(別コンテナを作成します)
docker run -it -v D:\Docker\share:/root/share --name pytest2 python:3.6 /bin/bash
もしフォルダを共有してよいか警告が表示された場合は、「Share it」をクリックします。

Docker Desktop – Filesharing
Docker wants to access to D:xxx.
Do you want to share it?
Windows側では共有したフォルダに、適当なファイルを作成します。

コンテナ側で、ファイルが作成されていることを確認します。
(Windows側で作成したPythonファイルをコンテナで実行した例)

Docker Desktopで確認
私は基本的にDockerコマンドで操作していますが、Docker Desktop上でもコンテナを操作できます。
コンテナ一覧
コンテナの一覧が表示され、稼働状況やCLIを開いたり、停止、再起動、削除などを行うことができます。

イメージ一覧
Dockerイメージの一覧が表示されます。

さいごに
このようにDockerは簡単に環境を用意でき、とても便利です。
ぜひ活用しましょう。
他にも私のブログで、Dockerについて解説している記事がありますのでご覧ください。
コメント