PC

Ryzentosh上でDockerを使う方法

Ryzentosh上でDockerを使う方法をまとめました。

公開日: 2021.1.6

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に近いのではないでしょうか。