リモート開発メインのソフトウェア開発企業のエンジニアブログです

Windows 版 Amazon WorkSpaces で Docker を使う

以前以下のような記事を書きました。

Windows 版 Amazon WorkSpaces での開発 – もばらぶエンジニアブログ

その際に、Windows 版 Amazon WorkSpaces では「Docker が使えない」と書いたのですが、回避方法が分かったので説明します。

概要

やりたいことは「Windows 版 Amazon WorkSpaces で Docker を使った開発を行う」ことです。

解決方法の概要としては以下の通りです。

  • 別途 EC2 を立て、そこに Docker デーモン(サーバー)を起動する
  • Amazon WorkSpaces からその Docker デーモンに接続するようにする
    • DOCKER_HOST 環境変数の設定
    • Docker の CLI のみインストール

以下の URL を参考にしましたが、今回紹介する方法はここまで本格的では無く、簡略化した方法です。

How to configure Amazon WorkSpaces with Windows and Docker | Desktop and Application Streaming

やったこと

EC2 を立てる

EC2 を立てる方法は省略します。簡単にやるなら AWS コンソールから出来ますし、Terraform や CloudFormation を使うのでも良いと思います。

なお、特別な理由が無い限りは Amazon Linux を使う事をお勧めします。

EC2 上で Docker デーモンを起動する

EC2 が起動したら、EC2 に接続します。SSH でも良いですが、私は Session Manager を使いました。

次に、Docker をインストールし、Docker デーモンを起動します。普通に起動すると Docker デーモンは外部のホストからは接続出来ないので、設定を少し変える必要があります。以下の通りコマンドを実行して下さい。

# Docker のインストール
sudo yum update -y
sudo amazon-linux-extras install docker
# 外部から接続出来るように設定を変更
sudo cp /lib/systemd/system/docker.service{,.bak}
sudo sed -i 's/dockerd\ \-H\ fd\:\/\//dockerd/g' /lib/systemd/system/docker.service
sudo sh -c 'echo "{\"hosts\": [\"tcp://0.0.0.0:2375\", \"unix:///var/run/docker.sock\"]}" > /etc/docker/daemon.json'
# Docker デーモンを再起動し、新しい設定を有効にする
sudo systemctl daemon-reload
sudo service docker restart
# おまけ: ec2-user から Docker を使えるようにする
sudo usermod -a -G docker ec2-user

Amazon WorkSpaces 側で環境変数の設定

Amazon WorkSpaces 側の設定としては、以下の通り環境変数を設定するだけです。

  • 環境変数名: DOCKER_HOST
  • 設定する値: tcp://<EC2 のホスト名>:2375

Amazon WorkSpaces に Docker CLI のインストール

後は Docker CLI をインストールすれば完了なのですが、Windows の場合、Docker CLI のみをインストールする公式の方法は今のところありません。以下に issue が立っています。

Provide a way to download only the docker-cli · Issue #2281 · docker/cli

非公式の方法はいくつかあるのですが、今回は Windows 向けのパッケージマネージャーである Chocolatey を使用します。

Chocolatey Software | Chocolatey – The package manager for Windows

インストール方法は、Administrator 権限で PowerShell を起動し、コマンドを1行打つだけです。詳しくは、以下の公式ドキュメントを参照して下さい。

Chocolatey Software | Installing Chocolatey

次に Docker CLI のインストールです。Chocolatey のインストールの時に PATH 環境変数が修正されているので、一旦、PowerShell を閉じ、再度 Administrator 権限で PowerShell を起動した上で、以下のコマンドを実行します。

choco install docker-cli

その他

DOCKER_HOST の使い道

そういえば、以前 WSL 1 で Docker を使うために DOCKER_HOST 環境変数を触ったことを思い出しました。

Windows で開発環境を構築する – もばらぶエンジニアブログ

その他の使い道としては、比較的スペックの低いノート PC で開発する際に、スペックの高いデスクトップ PC で Docker デーモンを動かしてそっちを使う、なんてことも出来そうです。

MinGW/MSYS2 もインストールしておく

普通の Windows PC で開発する場合には、WSL を入れてそっちで作業することが多いと思いますが、Windows 版の Amazon WorkSpaces では WSL は使えません。

解決方法としては MinGW/MSYS2 をインストールすることです。それにより、bash や Linux 系 OS の各種ツールが使えるようになります。(気が向いたらそのうち記事を書きます。)

まとめ

Windows 版 Amazon WorkSpaces では、Docker デーモンを動かす事は出来ないため、普通にやると Docker が使えないのですが、別途 EC2 上に Docker デーモンを立ててそちらに接続するように設定する事で、問題無く Docker が使えるようになります。

今回の Docker の設定に加えてMinGW/MSYS2 も使う事で、Windows 版 Amazon WorkSpaces でも Linux や Mac に近い形で開発が進められるようになります。とはいえ、今回紹介したように色々と面倒な設定も必要なので、もし選択できるのであれば、Microsoft Office を使う必要がある人以外は、開発作業には Linux 版 Amazon WorkSpaces を使う事をお勧めします。

← 前の投稿

AWS AthenaでINSERTするときに困ったこと

次の投稿 →

Vagrant で Linux での最新の Docker 環境を構築

コメントを残す