概要

ここでは、macOSにSSHでアクセスしてDockerを使う方法について紹介します。

環境

  • macOS 10.15.6
  • VirtualBox 6.1.14

やろうとしたこと

macの特徴としてUnixであるということがあり、開発においてUnixは扱いやすいです。

そこで、開発用のマシンとしてmacOSを使おうと考えており、その際には、マシンに外部からSSHでアクセスして操作します。

しかし、そのような計画を実行しようとしていたら壁にぶつかりました。

問題

開発にはよくDockerを使うのですが、macOSでよく使われるDocker for MacをSSHから起動しようとするとエラーが発生してうまく起動できません。これでは開発に使うには不便です。

原因として考えられるのは、SSHでアクセスしているためGUIが使われているようなソフトをSSHから起動することが難しいということです。

解決策

そこで色々と調べてみると、Docker Machineというものを使えば、GUIが使われていないため、Dockerを使うことができそうということが分かりました。

Docker Machineのインストールについて紹介します。

Docker Machineを使うにはDocker for Macをアンインストールする必要があるようですので、最初にアンインストールをします。

Docker Machineでは、仮想化ソフトを使い、仮想マシン上にDockerの環境を構築します。今回は、無料で使えるVirtualBoxを使うことにしたため、VirtualBoxのインストールを行います。

VirtualBoxをインストールしたら、次のコマンドを実行してDocker Machineに関連するソフトをインストールします。

brew install docker docker-machine

最後に、Dockerが実行される仮想マシンを作成します。

docker-machine create --driver virtualbox dev

今回は開発用ということで、devという名前で仮想マシンを作成しました。

使い方

Docker Machineの使い方は独特です。

まず最初に、次のコマンドでDocker用の仮想マシンを立ち上げます。

docker-machine start dev

今回はdevという名前で作成した仮想マシンを立ち上げるため、devと指定しています。

この後に、設定をします。設定では、docker-machineコマンドを使ってdockerコマンドを実行する際の設定を行います。

eval $(docker-machine env dev)

このようにすることで、dockerコマンドを使ってコンテナを作成することができます。

docker run --rm ubuntu:latest

Docker Machineへの不満があるとすれば、仮想マシンの起動はmacOSを立ち上げるごとに、dockerコマンドへの設定は、シェルをたちあげるごとにするため少々面倒だということがあります。

さいごに

macOSは、GUIが使いやすく良いのですが、GUIを使わないようなことをしようとすると、少し面倒なことになりました。