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 を使う事をお勧めします。
コメントを残す