1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

自宅WinPCにコンテナを建てた作業メモ(Docker Desktop on windows)

Last updated at Posted at 2022-08-31

はじめに

名前はよく聞くkubernetes(k8s)。
AI基盤な会社の面談前にAWS上で動かそうと思ったら、AWSアカウントが凍結されていた(securityがばがばのroleを作ってしまっていた様子)ため、できませんでした。

ローカル環境でk8sを動かすMinikubeという教材を教えていただいたので、電話経験13年、クラウド経験0の素人が公式チュートリアルをみながら建ててみました。

という意気込みで始めましたが、長くなってしまったので、本編では、WSL2+Docker for wondowsでコンテナを建てるところまでをお送りします。Minikubeは第二編で

まとめ

Minikubeのget startedを見て、コンテナを管理するつもりが、いつの間にかDocker Desktop on Windowsを使ってコンテナを作り、Djangoアプリを乗せる。にすり替わりましたが、どうやらコンテナは作れたようです。

構成イメージ

image.png

新しいコンテナができていることが確認できました。

image.png

チュートリアルも色々リンクがあるので、途中で目的がコンテナの上でDjangoアプリを
動かすにすり替わっていました。
image.png

参考文献

[1] Minikubeゲットスタート https://minikube.sigs.k8s.io/docs/start/
[2] Docker オリエンテーション https://docs.docker.com/get-started/
[3] Docker Desktop on Windows https://docs.docker.com/desktop/install/windows-install/
[4] Install Windows WSL2 https://docs.microsoft.com/en-us/windows/wsl/install
[5] Set up WSL2 https://docs.microsoft.com/en-us/windows/wsl/setup/environment
[6] Docker remote container on WSL2 https://docs.microsoft.com/en-us/windows/wsl/tutorials/wsl-containers

以下は作業メモです

Minikubeを使用してローカル環境でKubernetesを動かす

1. ツール(minikube)のインストール要件

minikubeは、ローカルのkubernetes 学習にフォーカス。
Dockerと、minikube startのコマンドが必要。

ツールのインストールについて知りたい場合は、公式のGet Started!のガイドに従ってください。

→ minkkube のGetting startedへ

1.1. minikube Getting started

必要なリソース

2CPU, 2GB memory, 20GB disc, Internet, Docker
→Ctrl + Alt + escape で確認
我が家は12CPUコア、32G memory、925G disc, Internetあり
だが、Dockerがない。
→Dockerチュートリアルへ

2. Docker Orientation and setup

Download
Linux/Mac/Windowsが選べる
→Windowsを選択
https://docs.docker.com/desktop/install/windows-install/In

2.1 Docker Desktop on Windows

https://docs.docker.com/desktop/install/windows-install/
・WSL 2 backendと Hyper Vの二種類ある。何が違う?
 WSL2: LinuxをWindows上で直接実行???
 Hyper-V:仮想マシン その上にLinuxを乗せる???
→Win11では、MSさんはWSL 2推しのようなので、WSL2を選択(2.1.a.節で調査内容を補足)

2.1.a. WSL2とHyperV補足

どちらもWindows上でLinuxを動かす機能。
Microsoft公式ドキュメントを見ると、Hyper-VのWin11の記事がなかった。
→最近はWSL2推しなのだろう。WSL2を使うことにします。

2.1.a.1. WSL2

Windows Subsystem for Linux
従来の仮想マシンまたはデュアルブート セットアップのオーバーヘッドなしで、ほとんどのコマンドライン ツール、ユーティリティ、アプリケーションなどを含む GNU/Linux 環境を、変更せずに Windows 上で直接実行できます。

// Mac OS Xの頃は、MacにWindowsデュアルブートしてたな。懐かしい。

2.1.a.2 Hyper V

Windows 上の仮想マシンとして複数のオペレーティング システムを実行
Hyper-V は、64 ビット版の Windows 10 Pro、Enterprise、および Education で使用できます。
私のPCはWin11のproなので、Hyper-Vは対象外?

2.2. 要件 for Docker Desktop on Windows

https://docs.docker.com/desktop/install/windows-install/
(1)Windows 11 64-bit: Home or Pro
 →Pro なのでOK
(2)Enable the WSL 2 feature on Windows.
  →後述 2.3.節でWSL2 有効化手順
(3)64-bit processor with Second Level Address Translation (SLAT)
  //よくわからない。Win11 Pro の要件なので大丈夫そう
   https://www.microsoft.com/ja-jp/windows/windows-11-specifications?r=1
    クライアント Hyper-V 第2レベルのアドレス変換 (SLAT) 対応のプロセッサが必要です
    (Windows Pro 以上のエディションで利用可能)。
(4)4GB system RAM
 → OK
(5)BIOS-level hardware virtualization support must be enabled
 https://docs.docker.com/desktop/troubleshoot/topics/#virtualization
・Windowsの拡張機能で下記を有効化
 Windows Subsystem for Linux
・BIOS画面でIntel Virtualization TechnologyをON
 https://bce.berkeley.edu/enabling-virtualization-in-your-pc-bios.html
 
(6)Linux kernel update packageをインストール
 → 後述 2.3.1.節

2.3. WSL2を有効化

・Windows power shellを管理者権限で実行
・wsl --list --online
どれをインストールすればいいのかわからーん

NAME            FRIENDLY NAME
Ubuntu          Ubuntu
Debian          Debian GNU/Linux
kali-linux      Kali Linux Rolling
openSUSE-42     openSUSE Leap 42
SLES-12         SUSE Linux Enterprise Server v12
Ubuntu-16.04    Ubuntu 16.04 LTS
Ubuntu-18.04    Ubuntu 18.04 LTS
Ubuntu-20.04    Ubuntu 20.04 LTS

→無印のUnuntuはよりも安定してそうなので、Long term supportの20.04にしておこう
 Ubuntu-20.04 Ubuntu 20.04 LTS

Ubuntu 20.04 LSTのハード要件

2 GHz dual core processor
4 GiB RAM (system memory)
25 GB (8.6 GB for minimal) of hard-drive space (or USB stick, memory card or external drive but see LiveCD for an alternative approach)
VGA capable of 1024x768 screen resolution
Either a CD/DVD drive or a USB port for the installer media
Internet access is helpful

→問題なさそう

2.3.1. Ubuntuのインストール

Microsoftのベストプラクティス https://docs.microsoft.com/en-us/windows/wsl/setup/environment

・Ubuntuのインストール
 Windows Power SHellで
  wsl --install -d Ubuntu-20.04
・UbuntuのUsernameとパスワードを設定
 適当に設定
・Ubuntuのアップデート
 sudo apt update && sudo apt upgrade
 
・Windows Terminalのインストール(Windowsのおすすめ)
 Power ShellとUbuntuのウィンドウをタブで開けるのでよさげ
image.png

・Vscodeのインストール(Windowsのおすすめ)
 https://docs.microsoft.com/en-us/windows/wsl/tutorials/wsl-vscode
 ・VSCodeのダウンンロード&インストール
  https://code.visualstudio.com/download

・Set up version management with Git
 省略

・Set up remote development containers with Docker
 これだ!やっとDockerにたどり着いた。

2.4. Microsoft Get started with Docker remote containers on WSL 2

https://docs.microsoft.com/en-us/windows/wsl/tutorials/wsl-containers
Dockerは、コンテナを使ってアプリを、作って、デプロイして、走らせるツール。
ライブラリとかもセットでコンテナに入ってるので、マシンによらずにコンテナ内の
アプリは実行できる。

2.4.1 事前準備

・Win 11         :ホストOS? OK 
・WSL2+Ubuntu      :ハイパーバイザ+ゲストOS? OK
・Visual Studio Code    :code, debug用ツール OK
・Windows terminal   :複数のterminalを開けるツール OK
・Docker ID作成     :Personal は無料で作れるので作成 OK
・Docer desktop licence :合意 OK

2.4.2. Install Docker Desktop

https://docs.docker.com/desktop/windows/wsl/
・Docker Desktop for windowsをダウンロード
 ・インストール
 ・設定
  Settings > General >Use WSL 2 based engine

・Enabling Docker support in WSL 2 distros
 Version 2か確認

wsl.exe -l -v
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         2

・Docker Desktop
 Settings > Resources > WSL Integration.
 Ubuntu-20.04をEnableにする。

Terminal Ubuntuでdocerのバージョン確認
20.10.17! Docker入った!

ubukanegae0820@gare_shun:~$ docker --version
Docker version 20.10.17, build 100c701

ubukanegae0820@gare_shun:~$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.

2.4.2.1. Develop in remote containers using VS Code

VS Codeに拡張を追加
・Remote-WSL extension:WSL上のOS(Ubuntu-20.04)を開く
・Remote-Containers extension:こて名の中の、repo or プロジェクトフォルダが開ける。
・Docker extension:VS Codeからコンテナアプリを管理、実装、削除。

2.5. コンテナの上に、Django app(Python用のWeb app framework)を乗せる

2.5.1. HelloWorld-Django web appのダウンロード

TerminalのUbuntu上で

ubukanegae0820@gare_shun:~$ git clone https://github.com/mattwojo/helloworld-django.git
ubukanegae0820@gare_shun:~$ cd helloworld-django
ubukanegae0820@gare_shun:~/helloworld-django$ code .

VS Codeが開く

2.5.2. フォルダを開く

Remote-Containers: Open Folder in Container.
でエラーになった。

The command 'docker' could not be found in this WSL 2 distro.
We recommend to activate the WSL integration in Docker Desktop settings.
For details about using Docker Desktop with WSL 2, visit:
https://docs.docker.com/go/wsl2/

https://docs.docker.com/go/wsl2/ へ
Docker DesktopのアプリをWindows上で立ち上げてないとエラーになる様子。
再度 Remote-Containers: Open Folder in Container.
\wsl.localhost\Ubuntu-20.04\home\ubukanegae0820\helloworld-django

2.5.3 Python 3を選択

.devcontainer folder ができて、
 Dockerfile
 devcontainer.json
が生成される。

2.5.4 バージョン確認

image.png

image.png

→コンテナの上でアプリが動いた

コンテナができてました。

Docker Desktopを開くと、新しいコンテナ「vsc-hellowworld」ができた!
image.png

やっと、Minikubeに必要なDockerの環境ができました。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?