Docker Desktop を使わない Docker 環境作り (Windows)

Docker Desktop for Windows が 2022/01/31 までの猶予期間も終わったので、 Docker Desktop を使わないで、 Windows 環境において Docker が使える環境作りが必要になる場合もあるかと思います。

WSL2 環境の整備

Windows 10 以降の環境では WSL2 (Windows Subsystem for Linux バージョン2) を使って、 Ubuntu の環境を作り、そこに Docker をインストールするという方法を使います。

Docker Desktop がインストール済みの場合、アンインストールしておいて下さい。

今回 WSLはバージョン2であることも大切と考えていますので、 wsl -l -v コマンドを実行して、 VERSION 2 であることを確認しておきます。

もし、バージョンが 2 ではない場合には、WSL2 Linux カーネル更新プログラムを適用して、以下のコマンドを実行してバージョンを変更します。

wsl --set-version Ubuntu-20.04 2

バージョンの変更が完了したら、先ほどのコマンドを実行してバージョン2となっているか確認しておきます。

WSL2 の Ubuntu に Docker をインストール

Docker CE (Community Edition) をインストールするために、以下のようにパッケージを追加・インストールをしていきます。

apt が https でも動作するようにパッケージ追加

$ sudo apt install apt-transport-https ca-certificates curl software-properties-common cgroupfs-mount

docker のリポジトリを使うため GPG 登録

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

リポジトリの登録

以下のコマンドでリポジトリを登録します。

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

ここでは focal を使用していますが、将来的に Ubuntu のバージョンが変わったらこの部分を適切に変更して下さい。

Docker CE をインストール

以下のコマンドを実行してインストールします。

$ sudo apt install docker-ce

通常の Linux 環境であれば Docker がこれで動き出すのですが、 WSL の環境では systemd が動いていないため、自動ではサービスが動いていない状態になっています。

通常ユーザーで docker コマンドを実行したいので、 docker グループに追加しておきます。

$ sudo usermode -aG docker $USER

Docker Compose インストール

docker-compose コマンドも使いたいことが多いのでこの時点でインストールしておきます。

$ curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m`
$ chmod +x ~/docker-compose
$ sudo mv ~/docker-compose /usr/local/bin

ここではバージョン 1.29.2 を使用していますが、状況に合わせてバージョンの指定は変更してください。

docker サービスの起動

シェルで以下のコマンドを実行して、 docker サービスを起動します。

$ sudo cgroupfs-mount
$ sudo service docker start

このコマンドを実行してサービスが起動するので、docker を使う前にはこれらのコマンドを実行するのを忘れないようにしましょう。

このコマンド群をシェルスクリプトにしてしまってもよいのですが、sudo コマンドを使っていることから予想できるように、パスワードが要求されてしまいます。そのため、自動起動するようにはさらにひと工夫が要求されます。

動作の確認

nginx のコンテナを動かしてみて、動作を確認してみます。ここでは簡単に以下のコマンドを実行します。

$ docker run -p 80:80 -d nginx

起動後、 http://localhost/ にアクセスを行い、 nginx のページが表示されれば上手く動作しています。

別 PC からアクセスしても表示されないので注意しましょう。
WSL2 の Ubuntu で動いている都合もあり、 外側に向けて 80 番ポートを Listen している状態ではないためです。

外部の PC などから、コンテナ内で動いているサービスにアクセスする場合には、さらに Windows のポートフォワードの設定やファイアウォールの設定が必要となります。

まとめ

今回は WSL2 環境 Ubuntu を用いて環境を作る方法を紹介しました。もちろん VirtualBox を使って Linux 仮想マシンを作り、そこに Docker をインストールする、という方法も出来ますが、より手軽に出来る WSL2 で作ってしまうのもアリだと私は思います。

関連記事

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください