Docker環境をWindowsで作る

開発環境

この記事では、WindowsのWSL2上で動作するDocker Desktop環境を構築するための方法をまとめます。

こんな人におすすめ
  • WindowsでDocker環境を作りたい方
  • Docker環境を構築したことがない方
  • Dockerの環境構築方法を画像付きで見たい方

Docker Desktopとは

Docker DesktopはDockerの公式ツールで、DockerをGUIで手軽にインストールし使うことのできるアプリケーションです。WindowsでもWSL2を活用することでLinuxコンテナを扱うことが可能です。

Docker Desktopのインストール

1. Docker Desktopのダウンロードサイトにアクセスし、Docker Desktopをダウンロードするをクリックします。

2. OS、CPUに合ったインストーラーをダウンロードします。

(Windows & Intel CPUの場合、Windows用をダウンロード - AMD64を選択します。)

3. ダウンロードしたインストーラをクリックし、インストールします。

4. 設定項目をチェックし、OKを選択します。

5. インストールが始まるので終わるまで待ちます。

6. この画面が出たら完了です。

DockerをPC起動時に自動実行する設定

1. メインモニターの画面右下のタスクバーにある矢印をクリックし、下記画像の左上のようなクジラのマークを右クリックします。

2. 画像のような画面が表示されるので、Change settingsをクリックします。

3. 以下の設定画面が表示されるので、Start Docker Desktop when you sign in to your computerのチェックボックスをクリックし、有効にします。

4. Apply & restartをクリックして、変更を確定させます。

Dockerのエラー

error during connect: Get “http://%2F%2F.%2Fpipe%2FdockerDesktopLinuxEngine/v1.47/containers/json”: open //./pipe/dockerDesktopLinuxEngine: The system cannot find the file specified.

このようなエラーが出る場合、Docker Desktopが起動していないことが考えられます。

Docker Desktopアプリを起動してください。

起動はWindowsキーを押し、docker desktopと入力するとアプリが表示されるのでクリックします。

Docker in Windowsの注意点

Windows上でのDockerではいくつかLinux上でのDockerとの違いがあります。詰まりポイントでもあるので、以下によくハマる点について紹介します。

-net = host が使えない

-net=host/--network=hostはdockerコンテナの起動時オプションとして指定することで、コンテナ内のネットワークをホストのネットワークの名前空間と一致させ、コンテナ内であってもホストPCと同じようなネットワーク上の動作をさせることが可能なオプションです。

ネットワークについてほとんどdocker内であることを考える必要がなくとりあえずの環境としては便利であるため、様々なサンプルプログラムや記事で指定していることがよくあります。

しかし、Windows内のdockerでこのオプションを付けて起動した場合、特にエラー等の表示はされませんが、実際には設定が反映されず詰まりポイントの一つなので注意が必要です。

GUI出力が出来ない/難しい

dockerコンテナ内部でGUI表示を行いたい場合、以下の設定を行うことで、ホストPCのX11サーバーに画面をフォワーディングして表示することが一般的です。

x11フォワーディングの際に指定するコンテナ起動時オプション

  • -e DISPLAY=$DISPLAY
  • -v $HOME/.Xauthority:/root/.Xauthority
  • -v /tmp/.X11-unix:/tmp/.X11-unix

しかし、Windowsのホストマシンでは一般的にx11サーバーが起動していないことから、この方法がそのままでは使えません。

対処法として、x11サーバーを追加でインストールして起動し、dockerコンテナ→wsl→ホストWindowsと経由することで画面出力が一応可能です。

また、xrdpやvncなど他の手段を用いることで画面出力自体は可能ですが、一般的によく紹介されているx11フォワーディングの方法がそのままではうまくいかないので注意です。

コメント

タイトルとURLをコピーしました