Docker をどの OS 上で使うか?

記事
IT・テクノロジー

Docker をどの OS 上で使うか?

フロントエンドだけを作っていると余り OS(オペレーティングシステム)を意識する機会は少ないと思いますが、バックエンドを含めた開発を手がけるようになると、OS の知識も重要になってきます。Docker は Windows ベースのコンテナも使えますが、大半は Linux ですし、Web ホスティングをするサーバーも Linux を使うケースは多いと思います。それを考えると、Linux の知識や Linux の開発する環境を整えることも重要になってきます。

Linux の開発環境

開発に利用する PC の OS は、Mac や Windows が多いと思いますが、Linux 系の OS の開発環境があると便利な場合が多いです。特に、Docker を使って開発する場合、ベースの OS が Linux を利用する場合が多くなるので、便利です。Windows の場合は、最新の Windows10 では、WSL(Windows Subsystem for Linux)がサポートされているので、Windows 上で Linux の仮想マシーンを簡単に利用できるようになりました。Docker もこの機能を利用してサポートしています。 MacOS はもともと、Unix(BSD 系)から派生した OS で、OS そのものは Linux に近い形の OS です。実際は、Docker をサポートするために、Linux の仮想マシーンを動かしてサポートしています。

そう考えると、Docker のコンセプトを一番効率よく利用できるのは、Linux ということになります。

しかし、通常の場合、開発に何台もの PC を使えるケースは特に個人(フリーランス)の場合は少なくなるので、多くの方は、Mac か Windows の PC で開発することになります。

そこで、性能はある程度犠牲にしても、仮想マシーンを動かして Docker を活用することになります。

MacOS で使うには?

MacOS で利用するためには、MacOS 上で Linux の仮想マシーンを導入して使います。Docker のパッケージ(Docker Desktop)にはこの仮想マシーンのパッケージが含まれています。 仮想マシーンを MacOS で動かす必要があるため、M1 Mac では、最近まで(2021 年 4 月中旬)までサポートされていませんでした。現在は、Docker のサイトから M1 Mac 上で動作するパッケージが配布されています。

2021 年 5 月現在でも、ARM64 の CPU 上で動作しない Docker イメージもある旨が Docker のサイトに書かれています。(Intel 版のイメージを「--platform linux/amd64」をついて利用する) 今後、改善すると思いますが、M1 Mac での利用は限定的ですが、とりあえず使えるようになったという感じです。

MacOS で利用する場合、MacOS 上で Linux の仮想マシン(ゲスト OS)を動かして利用することもできます。この場合でも、M1 Mac では ARM64 版の Linux を利用することになるので、一部のイメージは同じ問題があることになります。現状では、私は、M1 Mac 上で Linux (Ubuntu)の仮想マシンを動かして Docker を利用しています。仮想マシン環境は(Parallels 16.5 を利用)とりあえず、現在手がけている開発では実用上は大きな問題もなく利用できています。

Windows10 での利用

Windows10 では WSL(Windows Subsystem for Linux)がサポートされるようになったので、最新のバージョン(20H1)では、この機能(WSL2)を利用して、Docker Desktop for Windows がサポートされています。

Docker Desktop のイメージをダウンロードしてインストールすれば利用できます。Docker のコマンドは、Windows PowerShell からも実行できますし、デスクトップアプリからも実行できます。 WSL2 を利用して、Microsoft ストアから Ubuntu などの Linux パッケージを導入すれば、Linux のシェルも利用可能で、ここからも Docker を利用できます。

Windows10 の場合、Ubuntu などのパッケージを導入すれば、VSCODE も WSL の Linux シェルから利用できるので、殆どの開発は Linux 上で行うことが可能です。Windows 上で動作するイメージを作成しない場合は、WSL の Linux シェルで開発する方が便利なので、必要なパッケージは、Linux 側でインストールすると便利です。

Web 開発では:

* Docker
* Git
* VSCODE
* Node.js
* Python 
あたりをインストールして、VSCODE と Chrome の開発用のプラグインを導入しておけば、Windows の PC でもかなり快適かつ効率的に開発ができるようになりました。WSL が利用できるようになって、Windows での開発はかなり便利になりました。
Linux での利用
Linux で利用する場合は、特に特別なことはありません。Windows のところで挙げた開発ツールをインストールしておけば、問題なく開発できます。オフィスで利用している Linux の PC には、VMWare で Windows10 が動作するようになっていて、Windows のアプリが必要な場合は仮想マシーンで利用しています。主に、CAD アプリと、Office 系のアプリが中心です。

docker も Linux 上が一番効率よく動作させることができるので、Linux 上で使うのが一番効率的で便利です。 他の Mac や Windows10 の PC と連携して利用する場合は、XRDP(Linux のリモートデスクトップのサーバー側のアプリ)を入れておくと、リモートでも利用できるので便利です。

また、外出先からオフイスのデスクトップにアクセスするために「Anydesk」も導入しています。これを利用すると、直接インターネットに接続されていない、プライベートネットワークの PC にも外部からアクセスできるので便利です。

まとめ
2021 年 5 月現在で、Docker を利用する PC/OS について簡単にまとめてみました。 docker 自体が Linux を利用することを中心に作られているので、MacOS や Windows で利用する場合には、基本的には Linux の仮想環境を導入してその上で Docker を動かすことになります。Windows 上で Windows ベースのコンテナを動作させることも可能ですが、主流はやはり Linux のようです。

M1 Mac でも Docker を公式に利用できるようになりましたが、ARM64 版の Linux が必要なために、現状(2021 年 5 月現在)では、利用できるイメージに制限があるようです。ただし、利用できるイメージも多く、M1 Mac でも十分に活用できるレベルになってきていると思います。Docker を中心に開発するのであれば、M1 系の Mac はもう少し改善に時間がかかると思われます。

性能や効率を考えると、現状ではインテルの x 86ベースの CPU で Linux を利用して Docker を導入するのが、性能などを考えるとベストです。Windows 環境では、最新の Windows10 は WSL(Windows Subsystem for Linux)のサポートのおかげで、Linux を中心にした開発にも問題なく対応できるようになっています。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す