RyzentoshではなぜDockerが使えないのか?
コスパが高く人気のRyzenベースのHackintoshですが、Dockerが使えません。というのも、macOS向けのDocker環境「Docker for mac」がIntelの仮想化技術(Intel VT:インテル バーチャライゼーション・テクノロジー)を使っているためで、当然ですがRyzen CPUではIntel VTが使えないからです。
RyzentoshでDockerを使う方法
では、Ryzentoshでは全くDockerが使えないのかというとそういう訳ではありません。Docker自体はRyzen CPUにも対応しているからです。
Virtualboxを使う方法
これが一番シンプルです。RyzentoshにVirtualboxをインストールして、Linuxの仮想マシンを立ち上げます。そこでDockerをインストールすれば、仮想マシン上でDockerが使えます。
この方法のデメリットは、macOSのターミナルと統合されていない点です。また、Docker for MacのGUIを使った管理も出来ません。
Docker machineを使う方法
ちょっと裏技的ですが、Virtualboxの仮想マシンをDocker Machineで管理してしまう方法です。
詳細なやり方は、下記のページに紹介されていますが、ここでは主要な部分をピックアップして紹介します。Virtualboxはインストールされている前提とします。
sergeycherepanov /homebrew-docker-virtualbox
まず、Homebrewで上記のレポジトリの専用Dockerをインストールします。
brew tap sergeycherepanov/docker-virtualbox
brew install docker-virtualbox
インストールが出来たらdocker-virtualbox用の設定をします。
NFS exportsファイルを作成して、
sudo touch /etc/exports
NFSシェアとIPバランサーをユーザーグループでパスワードなしで実行できるようにします。
sudo tee /etc/sudoers.d/docker-machine-nfs <<SUDOERS
%staff ALL=(ALL) NOPASSWD: /sbin/nfsd
%staff ALL=(ALL) NOPASSWD: /bin/cp /etc/nfs.conf /etc/nfs.conf.bak
%staff ALL=(ALL) NOPASSWD: /usr/bin/tee /etc/exports
%staff ALL=(ALL) NOPASSWD: /usr/bin/tee /etc/nfs.conf
%staff ALL=(ALL) NOPASSWD: $(brew --prefix)/opt/docker-virtualbox/bin/gobetween
SUDOERS
ここまで出来たらRyzentoshを再起動します。
再起動したら、docker-virtualboxをリンクします。
brew link --force --overwrite docker-virtualbox
bashにパスを通します。
echo "export PATH=\"$(brew --prefix docker-virtualbox)/bin:\$PATH\"" >> ~/.bash_profile
SHELLをリロードします。
exec $SHELL
docker-machineを作成します。
docker-machine-init initialize
作成が出来たら、サービスをスタートさせます。
brew services start docker-virtualbox
ここまで出来たら、macOS上のターミナルからdockerコマンドでVirtualbox上のDocker machineを使ってコンテナを操作できるはずです。
当たり前ですが、Docker for Macからは操作が出来ないので、全てmacOS上のターミナルからコマンドラインからの実行になります。まあ、Dockerを使う方は基本的にはコマンドラインから操作してますよね。
Ryzentosh上でDockerを使う方法を見てきました。
ちょっと不便ではありますが、docker machineを使う方法ならmacOSのターミナルと統合されますし、使い勝手はほぼDocker for Macに近いのではないでしょうか。